在 Git 上 fork 了一个项目后,如果没有经常合并上游的更改,或者 fork 后的项目提交代码后没有提交到上游,就会出现
This branch is X commits ahead, Y commits behind”
可以通过如下的方式同步上游项目。
在本地添加上游项目:
git remote add upstream git@github:upstream/repo.git
当需要同步时,执行:
git pull --rebase upstream master
git push --force-with-lease origin master
–rebase 和 –force-with-lease 选项在没有合并到上游提交时才有必要。
以下还有几个可以用到的命令:
重置本地的更改到上游的状态:
git reset --hard upstream/master
其实通常使用中,建议为 功能/错误修复 创建一个新的分支。这样可以在等待 PR 被合并时,开始另一个 功能/错误修复 的开发。如果从不直接提交给 master,那么可以不用使用 –rebase 或 –force-with-lease 进行同步:
git checkout master
git pull upstream master
git push origin master
在更新主分支后更新功能分支:
git checkout myfeature
git rebase master
git push --force-with-lease origin myfeature