假设您和我正在处理同一个名为 index.html 的文件。我对该文件进行了一些更改,提交了这些更改,并将更改推送到远程 Git 仓库。您也对同一个文件进行了一些更改,提交了这些更改,并开始将更改推送到同一个 Git 仓库。但是,Git 检测到冲突,因为您所做的更改与我所做的更改冲突。
以下是如何解决冲突的方法
-
从远程仓库获取并合并最新更改
$ git pull
-
识别一个或多个冲突文件
$ git status
-
使用文本编辑器打开冲突文件
$ vim index.html
-
解决冲突。冲突的更改用
<<<<<<< HEAD
和>>>>>>>
标记。您需要选择保留哪些更改,以及丢弃哪些更改。手动编辑文件以合并冲突的更改。这是一个例子
<<<<<<< HEAD <div class="header"> <h1>Sample text 1</h1> </div> ======= <div class="header"> <h1>Sample text 2</h1> </div> >>>>>>> feature-branch
在这个例子中,我将网站标题更改为
Sample text 1
,而您将标题更改为Sample text 2
。这两个更改都已添加到文件中。您现在可以决定保留哪个标题,或编辑文件以合并更改。在任何一种情况下,删除指示更改开始和结束的标记,只留下您想要的代码<div class="header"> <h1>Sample text 2</h1> </div>
-
保存您的所有更改,并关闭编辑器。
-
将文件添加到暂存区
$ git add index.html
-
提交更改
$ git commit -m "Updated h1 in index.html"
此命令提交更改,并附带消息
Resolved merge conflict
。 -
将更改推送到远程仓库
$ git push
结论
合并冲突是让您专注于代码更改的一个好理由。您在一个文件中更改的内容越多,发生冲突的可能性就越大。您应该进行更多提交,每次提交的更改更少。您应该避免进行将多个功能增强或错误修复合并为一个的整体性更改。您的项目经理也会感谢您,因为意图明确的提交更容易跟踪。Git 合并冲突乍一看可能令人生畏,但现在您知道如何操作了,您会发现它很容易解决。
2 条评论