背景
多人使用同一个远端仓库开发项目,这时候直接推送代码到同一远端仓库,然后就会出现一系列的文件修改冲突情况,接下来我们具体情况具体分析一下。本文的主要围绕着下面两种情况展开的,在阅读之前可以先自己思考一下问题的答案是什么?
- 不同的人修改同一分支不同的文件,怎么解决冲突?
- 不同的人修改同一分支相同的文件的不同区域,怎么解决冲突?
不同的人修改同一分支不同的文件
今天小红和小绿都在master分支上做开发,小绿修改A文件,小红修改B文件。小绿先把文件推送到远程仓库。然后小红再推送文件到远端仓库的时候,发现推送出错了。
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
不要慌,这是个小场面,只要更新一下本地代码(git pull
)再推送一下即可。操作流程如下图所示:
不同的人修改同一分支相同的文件的不同区域
今天小红和小绿又都在master分支上做开发,这次他们修改的是同一个文件,小绿修改文件的第一段代码,小红修改文件的第二段代码。小绿先把文件推送到远程仓库。然后小红再推送文件到远端仓库的时候,发现推送出错了。这时候该怎么办呢?
不要慌,这都是个小场面。这次虽然修改的是同一个文件,但是还没有涉及到同一个区域,Git还是可以自动处理这种情况的。所以还是按照之前的方法,在提交之前,更新一下本地代码(git pull)
。
总结
以上两种情况也是我们开发过程中最常见的情况,除了推送报错的时候我们这么干,那么我们是不是还有优雅的方法呢?
肯定是有的,就是在提交本地代码前,先更新一下本地代码,然后再提交推送。
如果是先提交,再更新,最后推送到远端,提交记录中会多一条合并代码的记录,所有在意这条记录的同学就千万不要搞错顺序了。