需求

同一个项目,不同的开发者修改了不同的文件,如何解决同步冲突。

模拟

用户一修改

第一个用户新建一个分支,Responsive Image

以上命令就是新建一个分支feature/add_git_commands 将其与远端分支origin/feature/add_git_commands相关联,并切换到该分支。

Responsive Image

修改 readme 文件,并推送到远端。因为新建分支时已经做了与远端关联,所以可以直接git push

用户二修改

第二个用户,首先拉取远端分支。

Responsive Image

git branch -v查看本地分支,保持不变,但是git branch -av查看所有分支,可以发现多了两个远端分支。Responsive Image

新建本地分支,保持与远端分支名相同。

Responsive Image

此时再对与 readme 不同的文件进行修改,提交,推送都会比较顺利。因为当前分支保持fast forward

用户二继续做开发,但是没再往远端推送代码。在此期间,用户一对远端代码进行了更新。用户二想再次推送代码,将会报错,提示当前提交不再fast forward

Responsive Image

解决方法

  • git fetch远端分支Responsive Image

  • git merge合并远端分支Responsive Image

因为两个用户修改的不同文件,所以合并不会产生冲突。