Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to git fetch and checkout without creating a remote branch locally?

Use Case: I have some repo on GitHub, someone forked it and added new feature and initiated pull request. I can't automatically merge it because there are some minor problems I would like to fix first.

It's one-time activity I'll never need this remote repository, so I don't want to create local remote branch.

Basically I would like to do:

  1. copy files from remote repository and rewrite my own (without any git-related information).
  2. see difference with my current head.
  3. fix something and commit it.

How to do that?

git checkout git://github.com/xxx/xxx.git doesn't works at all (fail with error)

git fetch git://github.com/xxx/xxx.git works but doesn't update anything

like image 598
Alex Craft Avatar asked Apr 17 '12 22:04

Alex Craft


3 Answers

You want to use FETCH_HEAD.

whenever you run git fetch ... a magic reference called FETCH_HEAD is created.

Try for example:

git fetch git://github.com/xxx/xxx.git branch_name && git merge FETCH_HEAD
like image 139
phb Avatar answered Oct 12 '22 06:10

phb


For any Git server:

git fetch git://host.com/path/to/repo.git remote-branch-name:local-branch-name
git checkout local-branch-name

Another neat method (at least on/from Github) is fetching like this:

git fetch repo pull/7324/head:pr-7324

Where:

repo points to the remote repo, e.g. git://github.com/xxx/xxx.git.

pull/7324/head is the remote pull request.

pr-7324 is the local pull-request branch.

Then you can use the local PR branch to do whatever you want with it.

Source: adapted from this discussion.

like image 34
Christoph Avatar answered Oct 12 '22 06:10

Christoph