原则:
当你从 remote(远端) 去 pull 的时候,永远使用 rebase
当你完成了一个功能(假定你是单独开本地分支去做的)后打算合并到主干分支的时候,永远使用 merge( git merge 和 git rebase 的区别)
详细流程:
1. 不要使用 master 进行开发,新建 dev 分支进行开发
git checkout -b dev
2. 准备提交代码时,切换到 master,更新远端最新代码,如果有更新向下进行,如果没有跳到第7步
git checkout master // 切换到 master
git pull --rebase // 更新 master
3. 切换回 dev,将 dev 变基到 master
git checkout dev // 切换到 dev
git rebase master // 变基到 master
4. 步骤3可能会有冲突,需手动解决
git add ... // 手动解决冲突后指定需要提交的文件
git rebase --continue
5. 更新的内容在 dev 分支检验一下,看看在加入了最近别人的改动之后自己的功能是否依然 OK
6. 切换到 master 分支,再次检查在步骤5期间有没有人又有新的提交,有则重复步骤2、3、4、5、6,没有则向下进行
7. 此时是在 master 分支上,将 dev 分支的改动合并到 master,由于之前已经对 master 和 dev 同步过,一定不会有冲突。
git merge dev // 合并到 master
8. 提交 master 分支到远端
(git add ... )
(git commit ...)
git push origin master:refs/for/master
9. 切换回 dev 继续开发
git checkout dev