git协作开发处理文件冲突

╰半橙微兮° 2022-04-15 05:14 430阅读 0赞

git协作开发处理文件冲突

假设有一个项目TEST放在gitee(github等其他git仓库中)托管,在多人协作开发的过程中,难免会出现同时修改同一个文件的时候,同时操作同一个文件merge的时候就有可能出现冲突。下面记录一下怎么解决。

1、TEST项目由同学A和同学B同时开发,存在各自本地的项目名为test1和test2
同学A的工作目录:
watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjgzMTQ3Nw_size_16_color_FFFFFF_t_70

同学B的工作目录:
watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjgzMTQ3Nw_size_16_color_FFFFFF_t_70 1

2:项目中有一个test文件,一开始的文件内容如下:
watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjgzMTQ3Nw_size_16_color_FFFFFF_t_70 2
3:在开发中同学A需要对test文件进行修改,假设修改内容如下:
在这里插入图片描述

同学B也需要对test文件进行修改,修改内容如下,并把修改内容push到了服务器上。
watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjgzMTQ3Nw_size_16_color_FFFFFF_t_70 4
4:同学A修改后也想把自己的文件commit后push到服务器上,这个时候因为服务器上有其他同学推送的新代码,所以我们需要先pull代码到本地。这个时候我们发现刚才修改的test文件有冲突
watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjgzMTQ3Nw_size_16_color_FFFFFF_t_70 5
5:不要怕,我们继续点commit,然后鼠标右键有冲突的文件
watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjgzMTQ3Nw_size_16_color_FFFFFF_t_70 6
第一个框框里三句话的意思分别是:
1、标记冲突已经解决
2、使用服务器文件解决冲突
3、使用本地文件解决冲突
第二个框框
文件对比
6:点击第二个框框中的文件对比,可以看到,git帮我们merge后的文件往往是这样的,右侧部分。
watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjgzMTQ3Nw_size_16_color_FFFFFF_t_70 7
这个时候,我们既不能标记文件解决了冲突,因为那不是我们想要的代码,已经杂乱无章。也不能简单的让远程服务器文件覆盖本地或使用本地文件来解决冲突,那样,push之后,会丢失自己写的代码或者其他同学写的代码。下面来看看怎么办!
7:解决冲突
首先,我们先保存一下自己的代码,另存为test.bak.txt
watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjgzMTQ3Nw_size_16_color_FFFFFF_t_70 8
其次:使用远程服务器文件以解决冲突
watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjgzMTQ3Nw_size_16_color_FFFFFF_t_70 9
然后:此时test.txt中是远程服务器的代码,同学B修改的内容,text.bak.txt是同学A修改的内容。
watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjgzMTQ3Nw_size_16_color_FFFFFF_t_70 10
再然后:就是通过业务需求或者相互沟通,合并代码
假设合并后的代码是这样的
watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjgzMTQ3Nw_size_16_color_FFFFFF_t_70 11
最后:commit并push代码到远程服务器即可。

最最后:解决文件冲突的办法其实就是,把自己的代码另存为,让服务器代码覆盖本地代码,合并代码,commit并push到远程服务器。

发表评论

表情:
评论列表 (有 0 条评论,430人围观)

还没有评论,来说两句吧...

相关阅读