How to pull into not-the-current-branch?

Say my current branch is myfeature. I want to get master up to date. Both git merge git pull always merge into the current branch, as far as I can tell.

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:

  • What algorithm does git use to detect changes on your working tree?
  • A new git project from a branch?
  • How make Eclipse/EGit recognize existing repository information after update?
  • Maven and Gitlab: release:prepare uses the wrong SCM URL
  • Is it possible to see a remote's remotes in git?
  • Git merge strategy for Agile Branching workflow
  • 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”.

  • replay git commits on repo with different root
  • Android-Studio: No build.gradle in my project, why?
  • Script bash that restart PlayFramework 2 instance after a push to git?
  • Github, push a new project in place of an old one
  • Git deleted untracked files on pull
  • How to add heroku key to git to work properly
  • 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 '^*'
    $ git rev-parse OTHER_BRANCH origin/OTHER_BRANCH
    $ git fetch
    7b9b8e5..1efca56  OTHER_BRANCH -> origin/OTHER_BRANCH
    $ git rev-parse OTHER_BRANCH origin/OTHER_BRANCH

    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 origin/master onto 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>

    The -u ensures that the command still works even if you have the given branch checked out.

    Git Baby is a git and github fan, let's start git clone.