23、如何解决合并分支时的冲突

如果事先已经约好,比如各自完成的功能,那么发生冲突的概率就很小。

如果开发时候,没有约定好规范,发生冲突概率大。

模拟场景:

在main分支上修改并保存test.html文件中的div标签的文本内容为“这是main分支上的代码”

在终端执行  git add .

                    git commit -m main分支修改test.html

git checkout dev  (现在切换到dev分支)

在dev分支上修改并保存test.html文件中的div标签的文本内容为“这是dev分支上的代码”

在终端执行  git add .

                    git commit -m dev分支修改test.html

git checkout main  (现在切换到main分支)

【现在把dev分支上的代码合并到main分支上】

git merge dev    (发现报错merge failed。失败在test.html文件当中。)

打开test.html文件,其中可能发现有编辑器的提示。我们在这个文件的同一地方在不同分支上进行了修改,git就不知道在怎么解决,让我们来解决。

<<<<<<   HEAD (当前分支修改的代码)

       这是main分支上的代码

=====  (等号下面是其他分支合并过来的代码)

       这是dev分支上的代码

>>>>>>  dev 

【如何解决冲突:方式一】

git   merge   --abort  (忽略其他分支的代码,保留原分支的代码。即忽略dev分支代码,保留main分支代码)

打开test.html文件,其中发现冲突没有了。

【如何解决冲突:方式二】

git merge  dev  (又出现冲突了)

打开test.html文件,手动删除符号,保存后变成如下:

 

       这是main分支上的代码

 

       这是dev分支上的代码

(即把特殊符号删除,留下和其他同事沟通后的代码)

在终端执行

git status    (出现红色提示  both modified test.html。即同时修改了这个文件)

git add .

git commit  (弹出一个可编辑的界面。输入i可进入编辑模式。输入"这是解决冲突之后的正确代码  解决了test.html当中的冲突")(这样是给大家一个标识,就是解决了哪一个分支上面的哪一个文件,最终我们怎么积解决的)(先按esc再输入:wq,就可以退出编辑界面。)

git status   (此时没有东西可以提交了)

git commit   -m  解决冲突之后的代码

 

posted @ 2022-03-11 14:52  Strugglinggirl  阅读(624)  评论(0编辑  收藏  举报