Git 同步上游源更改

在 Git 上 fork 了一个项目后,如果没有经常合并上游的更改,或者 fork 后的项目提交代码后没有提交到上游,就会出现

1
This branch is X commits ahead, Y commits behind”

可以通过如下的方式同步上游项目。

在本地添加上游项目:

1
git remote add upstream git@github:upstream/repo.git

当需要同步时,执行:

1
2
git pull --rebase upstream master
git push --force-with-lease origin master

–rebase 和 –force-with-lease 选项在没有合并到上游提交时才有必要。

以下还有几个可以用到的命令:

重置本地的更改到上游的状态:

1
git reset --hard upstream/master

其实通常使用中,建议为 功能/错误修复 创建一个新的分支。这样可以在等待 PR 被合并时,开始另一个 功能/错误修复 的开发。如果从不直接提交给 master,那么可以不用使用 –rebase 或 –force-with-lease 进行同步:

1
2
3
git checkout master
git pull upstream master
git push origin master

在更新主分支后更新功能分支:

1
2
3
git checkout myfeature
git rebase master
git push --force-with-lease origin myfeature