Git pull a certain branch from GitHub

Question:

I have a project with multiple branches. I’ve been pushing them to GitHub, and now that someone else is working on the project I need to pull their branches from GitHub. It works fine in master. But say that someone created a branch xyz. How can I pull branch xyz from GitHub and merge it into branch xyz on my localhost?

But I get an error “! [rejected]” and something about “non fast forward”.

Any suggestions?

Answer:

That’s because Git can’t merge the changes from the branches into your current master. Let’s say you’ve checked out branch master, and you want to merge in the remote branch other-branch. When you do this:

Git is basically doing this:

That is, a pull is just a fetch followed by a merge. However, when pull-ing, Git will only merge other-branch if it can perform a fast-forward merge. A fast-forward merge is a merge in which the head of the branch you are trying to merge into is a direct descendent of the head of the branch you want to merge. For example, if you have this history tree, then merging other-branch would result in a fast-forward merge:

However, this would not be a fast-forward merge:

To solve your problem, first fetch the remote branch:

Then merge it into your current branch (I’ll assume that’s master), and fix any merge conflicts:

Leave a Reply

Close Menu