How to pull into not-the-current-branch?
Is there a way to merge changes from a remote branch (eg, origin/master) into a branch I’m not currently on (master)? I can think of one way:
git stash git checkout master git pull origin/master git checkout myfeature git stash apply
Is there a better one?
(It’s possibly my whole question is wrong: would
git fetch automatically update master to match origin/master, if remote-tracking is enabled?)
To summarise the answer below, it’s basically “just use
origin/master directly, you probably don’t need to actually do this merge”.
2 Solutions collect form web for “How to pull into not-the-current-branch?”
You are correct that pull/merge only merges into the current branch.
You can, however, still use fetch. For instance (names below changed to protect the innocent but the hashes are real):
$ git branch | grep '^*' * SOMEBRANCH $ git rev-parse OTHER_BRANCH origin/OTHER_BRANCH 7b9b8e57cf19964b60ebda0f03a1d5da3de9e2fe 7b9b8e57cf19964b60ebda0f03a1d5da3de9e2fe $ git fetch 7b9b8e5..1efca56 OTHER_BRANCH -> origin/OTHER_BRANCH $ git rev-parse OTHER_BRANCH origin/OTHER_BRANCH 7b9b8e57cf19964b60ebda0f03a1d5da3de9e2fe 1efca56c08b7a0f511a3951195656a798c56aa62
In this case,
fetch updated a bunch of origin/ branches. None of the local branches were updated (
git rev-parse output for those remains the same) but the new commits are now in the repo and can be viewed (
git log origin/OTHER_BRANCH,
gitk --all, etc).
Depending on your needs, this might be sufficient. In particular you can see what needs to be applied from
master, all without leaving your current branch.
git fetch -u origin master:master
Merge, update, and pull Git branches without using checkouts
git fetch -u <remote> <remoteBranch>:<localBranch>
-u ensures that the command still works even if you have the given branch checked out.