当前位置: 首页 > 网络应用技术

Git Advanced系列| 4.合并冲突

时间:2023-03-08 18:27:38 网络应用技术

  合并冲突...没有人喜欢它,有些人甚至害怕冲突。但是,当使用git时,尤其是在与其他开发人员合作时,冲突是不可避免的。在大多数情况下,联合冲突并不像想象中的那么可怕。在“ Git Advanced”系列的第四部分中,我们将讨论何时发生冲突,实际是什么以及如何解决。

  Git Advanced系列:

  何时以及为什么从名称中看到合并的冲突:当可能发生不同来源的更改和集成(或“合并”)时,可能会发生合并冲突。请记住,集成不限于合并分支机构。冲突也可能在樱桃挑选的内容(从一个分支到另一个分支中选择一个分支),执行甚至重新加载临时区域的内容期间发生冲突。

  所有这些操作都执行某种类型的集成,这是合并冲突可能发生的时间。当然,这并不意味着这些操作会每次引起合并和冲突,那么冲突何时会发生?

  实际上,GIT的合并功能是其最大的优势之一:分支机构大部分时间都可以正常工作。GIT通常可以自己解决问题,并知道如何整合变化。

  但是,相互矛盾也有变化。当时,技术无法确定什么是正确的和什么问题。目前,人类需要做出决策。例如,当在两个不同的分支中更改相同的代码行时,git不知道哪个更改是正确的。另一个不常见的情况是,一个文件在一个分支中修改并在另一个分支中修改并删除branch.git会问您应该做什么,而不是猜测该怎么办。

  我怎么知道何时发生合并冲突,那么我怎么知道合并冲突已经发生?不用担心,如果合并或重新命中失败,GIT会立即告诉我们并就如何解决此问题提出建议。例如,如果更改与其他人提交了冲突,GIT将在终端通知我们,并告诉我们自动合并失败:

  可以看出,这里发生了冲突,GIT立即报告了问题。即使您错过了此消息,也会在您下一次进入时发生冲突。

  如果您使用GIT桌面GUI之类的塔楼,它将确保不会忽略任何冲突:

  无论如何,不要担心合并冲突!

  如何撤销合并冲突并重新启动合并冲突。相反,必须在继续工作之前对其进行处理。基本上,有两个选择:

  在开始解决冲突之前,我们简要讨论如何取消并重新开始(知道可以恢复,这是非常放心的)。在许多情况下,您只需要仅添加参数即可。例如,如果您这样说,此命令可以在冲突之前撤销合并/折叠并恢复状态。

  当我们解决冲突时,即使我们发现自己已经进入了死胡同,我们仍然可以取消合并。这可以给我们信心,真的不会搞砸,我们总是可以停下来,恢复清洁状态,并然后重新开始。

  GIT中的合并冲突是什么?让我们看看真正的冲突是什么。现在是时候揭示这些小事的奥秘并更好地理解它们。一旦您理解综合冲突,就没有什么可担心的。

  查看当前冲突的内容:

  Git在文件中有一个好的标记区域。<<<<<<<和>>>>>>>攻城。在第一个标签后,我们当前的工作分支()的内容,七个相等的数字(===============)分开了两个冲突的更改。以下内容显示了另一个分支的更改(在示例中)。

  我们的工作是清理这些线路并解决冲突,无论是通过文本编辑,IDE,GIT桌面GUI还是通过diff&Merge工具。

  解决哪些工具或应用程序解决GIT冲突以解决合并冲突并不重要。合并完成后,文件必须看起来与预期完全相同。如果您是唯一的文件,它可以轻松地决定放弃哪些更改。在决定保留哪个代码之前,向他们致意。也许是保留您的代码,也许是两者的组合。

  清洁文件并确保包含真正所需的内容的过程不需要任何魔术。它可以简单地打开文本编辑器或IDE并更改此内容。

  但是,有时这不是最有效的方法。偏差可能会节省更多的时间和能量。

  以塔为例,它提供了专门的“冲突指南”,以使原始的抽象情况更直观,帮助更好地了解更改的来源,发生了什么类型的修改,最后解决了问题:

  特别是对于更复杂的冲突,最好拥有一个专用的差异和合并工具。它可以通过高级功能来帮助,例如特殊格式和不同的表示,我们更好地了解差异。

  市场上有一些差异和合并工具[2] [3],可以通过命令配置配置(请参阅该工具)。发生冲突时,您可以通过简单输入调用它。例如,我在Mac上使用万花筒:

  清理文件后(无论是文本编辑器,Git桌面GUI还是合并工具),您都可以像其他更改一样提交文件。输入通知已解决的GIT冲突。

  解决所有合并冲突并添加到登台区域后,您只需要创建一个常规提交即将结束的提交。

  不要恐慌!如果您看到它,没有任何不必担心冲突了,当然没有理由感到恐慌。破坏性后果。即使您意识到解决冲突时犯了错误,您仍然可以撤销它。您只需要在错误之前退回提交即可。

  如果您想了解有关高级GIT工具的更多信息,则可以免费检查“高级git套件[3]”:这是一个简短的视频集合,例如分支策略,交互式折叠,反式倒流,提交和其他主题。

  参考:[1] MAT YATE是以及如何处理:https://css-tricks.com/merge-what-what-how-deal-with/ [2] Mac的DIFF工具:https:// www。diff-tools-windows/

  你好,我是你的粉丝。我已经在摩托罗拉完成了研发。现在,我已经在Mavenir完成了技术工作,并且我一直对沟通,网络,后端建筑,Yunyan,DevOps,CICD,CICD,Blockchain,AI和其他技术保持着浓厚的兴趣。我通常喜欢阅读和思考,我相信持续的学习和成长,欢迎一起交流和学习。Wechat公共帐户:DeepNomind