Most efficient way to keep a fork up-to-date

﹥>﹥吖頭↗ 提交于 2019-12-05 00:20:25


I can think of a few ways to keep a fork up-to-date:

  • git pull, apply changes using a script (pull automatically merges)
  • git pull, merge (possible conflicts?)
  • git fetch
  • maybe using another branch some way?

Question: What's the most efficient way to keep a fork up-to-date?


Keeping a fork up-to-date is about the original repo: you need to base your local work on top of an up-to-date image of said original repo.

Generally, in a triangular workflow, the original repo is called upstream.

So all you need to do is:

git fetch upstream
git rebase upstream/master
git push --force

That will rebase your current branch on top of an updated upstream/master, and then you can force push (provided you are the only one working on your own fork).

This is very different from a pull, as it does not merge the branches from upstream to your own local branches.
Rather it replays your lcoal work on top of those branches, ensuring that a future pull request will be trivial to accept back into the original repo (fast-forward merge, as you are publishing only new commits on top of the most recent state of the upstream master branch)


You can use git pull to fetch the latest changes from remote as well as merge these changes locally. This will give you the most updated version for the branch you are on currently. This should be sufficient to keep your forked branch up-to-date.

By simply doing a git fetch you will just be updating your remotely tracked branch with new changes. You will then have to implement a merge command if you want to see the new changes locally.