git pull 相当于执行 git fetch + git merge
所以,不要从分支上执行 git pull master ,这样相当于在分支上去合并主干,会造成多线头的历史
git pull应该只去pull你本地分支对应的远程分支,不要去pull别的分支。
我们推荐的完整的git操作流程按顺序是这样的:
准备工作
=========
0、克隆一个远程的代码厍
git clone ...
1、在本地创建一个work分支
git checkout -b work
日常工作
===========
0、在本地的work分支做各种修改,修改完了以后提交。
git commit
1、去主干上把别人最新的修改抓到本地的master
git checkout master
git pull origin master
2、在work分支上rebase主干的修改
git checkout work
git rebase master # 此步骤有可能需要解决冲突。
2.1、(可选)如果此时xxx文件发生冲突,那么git会自动在你本地创建一个临时分支,你需要在这个分支下编辑冲突的文件,解决冲突:
编辑xxx文件
git add xxx
git rebase --continue # 继续执行rebase,如果成功,会返回work分支
或者
git rebase --abort # 回退到rebase之前的状态,返回work分支
2.2、(可选)如果你希望备份一下本地的work分支到服务器上,可以选择在这个时间点去上传
git push origin work
3、在主干上合并work分支的修改。(因为我们已经做了rebase,这里应该没有任何冲突)
git checkout master
git merge work
4、把本地的master推送到服务器,让别人能看到你的工作成果
git push origin master
只要按照此顺序操作,这些基本就是你日常需要用到的所有git命令了,不会遇到什么奇怪的麻烦。而且master的历史会保持线性,不会有多头历史。
注意:这只是我们推荐的工作流程。因为git比较灵活,支持很多种不同的工作流程,所以拦不住你不按这个流程操作。所以,请务必弄明白自己在做什么以后再操作。