中央仓库代表了正式项目,所以提交历史应该被尊重且是稳定不变的。如果开发者本地的提交历史和中央仓库有分歧,Git
会拒绝 push
提交否则会覆盖已经在中央库的正式提交。
在开发者提交自己功能修改到中央库前,需要先 fetch
在中央库的新增提交,rebase
自己提交到中央库提交历史之上。
这样做的意思是在说,『 我要把自己的修改加到别人已经完成的修改上。』最终的结果是一个完美的线性历史,就像以前的 SVN
的工作流中一样。
如果本地修改和上游提交有冲突,Git
会暂停 rebase
过程,给你手动解决冲突的机会。Git
解决合并冲突,用和生成提交一样的 git status
和 git add
命令,很一致方便。还有一点,如果解决冲突时遇到麻烦,Git
可以很简单中止整个 rebase
操作,重来一次(或者让别人来帮助解决)。