Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams

You can reference those remote tracking branches ~(listed with git branch -r ) with the name of their remote.

You need to fetch the remote branch:

git fetch origin aRemoteBranch

If you want to merge one of those remote branches on your local branch:

git checkout aLocalBranch
git merge origin/aRemoteBranch

Note 1: For a large repo with a long history, you will want to add the --depth=1 option when you use git fetch.

Note 2: These commands also work with other remote repos so you can setup an origin and an upstream if you are working on a fork.

Note 3: user3265569 suggests the following alias in the comments:

From aLocalBranch, run git combine remoteBranch
Alias:

combine = !git fetch origin ${1} && git merge origin/${1}

Opposite scenario: If you want to merge one of your local branch on a remote branch (as opposed to a remote branch to a local one, as shown above), you need to create a new local branch on top of said remote branch first:

git checkout -b myBranch origin/aBranch
git merge anotherLocalBranch

The idea here, is to merge "one of your local branch" (here anotherLocalBranch) to a remote branch (origin/aBranch).
For that, you create first "myBranch" as representing that remote branch: that is the git checkout -b myBranch origin/aBranch part.
And then you can merge anotherLocalBranch to it (to myBranch).

@knocte No: "If you want to merge one of your local branch on one of those remote branch": I am merging "aLocalBranch" to "myBranch", with "myBranch" representing a remote branch origin/aBranch. – VonC Jan 19, 2016 at 5:37 Sorry to bother you @VonC, in your previous comment you say aLocalBranch is not a typo, but you approved the latest edit (2 years later!) which corrects this "probable typo". I wanted to check with you before undoing the edit. – rath May 1, 2019 at 13:36 @rath You are correct: it appears I might have reviewed that edit a bit hastily, bordering on carelessness. I did edit the answer to clarify the second merge case: can you tell me if this is clearer now? – VonC May 1, 2019 at 18:54 I've created an alias for this. From aLocalBranch run git combine remoteBranch. Alias: combine = !git fetch origin ${1} && git merge origin/${1} – user3265569 Feb 9, 2021 at 15:42

Whenever I do a merge, I get into the branch I want to merge into (e.g. "git checkout branch-i-am-working-in") and then do the following:

git merge origin/branch-i-want-to-merge-from

This worked for me when the accepted answer reported Not something we can merge. In my case I was merging from another user’s fork of my repo on GitHub. – SJT Jul 5, 2019 at 12:59 Does the first command fetch required? Does ‘git merge origin/remote_branch_name’ reads from remote branch, not local. So I shouldn’t care, is local branch updated or not? – Michael Freidgeim Apr 30, 2020 at 6:45 @MichaelFreidgeim You do need to fetch first so your local repository knows the state of remote. Git pull is basically a fetch and merge from the current remote version of your current branch, but now you fetch and merge from a different one. stackoverflow.com/questions/292357/… – DZet Jul 6, 2020 at 17:18
  • Set this newly created branch to track the remote branch:
  •   git branch --set-upstream-to=origin/remote-branch new-local-branch
    
  • Enter into this branch:
  •   git checkout new-local-branch
    
  • Pull all the contents of the remote branch into the local branch:
  •   git pull
    

    If you already fetched your remote branch and do git branch -a,
    you obtain something like :

    * 8.0
      remotes/origin/xxx
      remotes/origin/8.0
      remotes/origin/HEAD -> origin/8.0
      remotes/rep_mirror/8.0
    

    After that, you can use rep_mirror/8.0 to designate locally your remote branch.

    The trick is that remotes/rep_mirror/8.0 doesn't work but rep_mirror/8.0 does.

    So, a command like git merge -m "my msg" rep_mirror/8.0 do the merge.

    (note : this is a comment to @VonC answer. I put it as another answer because code blocks don't fit into the comment format)

    Thanks for contributing an answer to Stack Overflow!

    • Please be sure to answer the question. Provide details and share your research!

    But avoid

    • Asking for help, clarification, or responding to other answers.
    • Making statements based on opinion; back them up with references or personal experience.

    To learn more, see our tips on writing great answers.