Git – Automatically fast forward all tracking branches on pull

Issue

I’ve set up tracking branches with the --track option, and when I do a git pull on master, it fetches all branches to origin/branchname but doesn’t merge with the local tracking branches. This is extra annoying, because if I later do a git push on master, it says that non-fast-forward updates were rejected on the tracking branches, since they weren’t fast-forwarded on the initial git pull.

My question is: How do I make it so that git pull with fetch all branches and automatically fast-forward all the tracking branches?

Note: git pull used to fast-forward all my tracking branches with my GitHub repos, but now that I’ve set up my own repos using Gitolite, this problem is cropping up.

Solution

But wait:

Note: I suppose you have tracked all your remote branches as in "Track all remote git branches as local branches."


Note: Git 2.0 (Q2 2014) will introduce with commit b814da8 a config pull.ff:

pull.ff::

By default, Git does not create an extra merge commit when merging a commit that is a descendant of the current commit. Instead, the tip of the current branch is fast-forwarded.

  • When set to false, this variable tells Git to create an extra merge commit in such a case (equivalent to giving the --no-ff option from the command line).
  • When set to only, only such fast-forward merges are allowed (equivalent to giving the --ff-only option from the command line).

Answered By – VonC

This Answer collected from stackoverflow, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0

Leave a Reply

(*) Required, Your email will not be published