本文继续我们的“高级git”系列。在Twitter上关注Tower,或订阅其新闻通讯以获取有关未来文章的最新信息。
合并冲突:GIT用户,尤其是那些合作的人的常见挫败感。但是,它们通常比看起来不那么艰巨。本期解释了他们的原因,性质和解决方案。
当将不同来源的变化集成到当前分支中时,会出现合并冲突。这不仅限于分支合并;重新挑选,挑选樱桃, git pull
甚至藏匿处都可能引发冲突。虽然并非每个集成都会导致冲突,但在存在矛盾的变化时会发生冲突。
Git的合并能力是一个关键优势。它会自动处理大多数集成。但是,当更改冲突(例如,在两个提交中修改或在一个分支中修改并在另一个分支中删除的文件)的相同代码行进行了不同的修改时,需要人为干预来解决歧义。
GIT显然信号合并冲突。终端将立即报告失败的合并或折叠:
<code>$ git merge develop CONFLICT (content): Merge conflict in index.html Automatic merge failed; fix conflicts and then commit the result.</code>
即使您错过了此消息, git status
也会突出冲突。像塔一样的Git Guis提供视觉提示,以确保您不会忽略冲突。请放心,吉特(Git)很难错过合并冲突。
忽略合并冲突不是一个选择。必须解决。您有两个选择:解决冲突或撤销引起的冲突。
使用--abort
参数(例如, git merge --abort
, git rebase --abort
)通常很简单。这逆转了合并/折叠,恢复了冲突前的状态。即使您已经开始解决文件,这也有效。您总是可以中止和重新启动。
让我们检查一个冲突index.html
文件:
git标记与的部分相互冲突。此标记后的内容来自您当前的分支(头)。 <code>=======
分开相互冲突的变化,其次是另一个分支的变化(例如, develop
),标志着 。
您的任务是使用文本编辑器,IDE,GIT GUI或合并工具编辑文件以解决冲突。
分辨率方法 - 文本编辑,IDE,GUI或合并工具 - 无关紧要;最终文件必须反映您所需的状态。简单的冲突可能涉及丢弃变更。更复杂的冲突可能需要协作来决定要保留哪种更改或如何结合它们。
尽管可以手动编辑,但专用工具通常会简化该过程。 GIT GUI提供视觉冲突解决方案。合并工具提供了高级的DIFF查看和比较功能(并排,组合视图等)。使用git config
配置您的首选工具,并使用git mergetool
调用它。
解决冲突并进行了更改之后( git add<filename></filename>
),像往常一样进行更改。
合并冲突是可以管理的。了解原因可以使您撤消或解决冲突。甚至错误都是可逆的。只需恢复冲突前的提交并重新开始即可。
要深入研究高级git,请探索免费的“高级git套件”,其中包含有关分支,互动式折叠,反射式,反式编码的视频,等等。
以上是合并冲突:它们是什么以及如何与之打交道的详细内容。更多信息请关注PHP中文网其他相关文章!