我是 Mercurial 的新手,当我尝试与本地分支合并时,我无法理解解决冲突。
我有一个第三方已将更改推送到的存储库。
我提交了更改,然后由第 3 方撤回了更改 - 按照 TortoiseHG 的建议。
当我尝试与本地合并时,出现以下屏幕,要求我解决冲突:
我真的不确定在这里做什么。
我选择什么选项将推送的第 3 方文件合并到我的本地文件并保留我提交的更改?
这可能是一个简单得可笑的问题,但我担心我会做出错误的选择并覆盖错误的文件,我以前见过这种情况(在不同的项目上),事实证明这是一场小灾难。我希望将第 3 方文件提交到我的本地分支。
我在拉取第 3 方文件之前提交的文件仅进行了较小的更改,如果确实需要,可以覆盖它们。
我已阅读文档,但这只会让我感到困惑。
一般来说:你不会丢失任何东西——唯一可能出错的是你的合并结果不是你想要的。因此,如果您不确定,首先要做的事情是:对本地存储库进行(本地)克隆 - 如果您有一个从未发生过合并的存储库,这是撤消不需要的或“错误”合并的最简单方法。
如果我理解正确,您希望(稍后)在您自己的本地头上继续并将上游提交合并到您自己的修改中。那么主要是关于“以哪种方式”进行合并的问题。因此,通常对于上述场景,您需要签出您的头,然后合并您从上游拉取的变更集的头。 合并对话框将提示您手动解决那些自动冲突解决不起作用的冲突。也许您想配置一个更好的合并工具,我个人偏好是 kdiff3,因为它会向您显示两种旧形式中的冲突部分,并允许您手动合并编辑它,同时在合并期间将两个引用很好地显示在屏幕上。请参阅
KDiff3了解如何配置它。还有其他您可能更喜欢的合并工具,很可能您可以轻松配置您选择使用的工具(ExtdiffExtension)。 如果您只是想说“其他”更改是您想要保留的更改,并在发生冲突时放弃自己的更改,您可以这样做
hg merge --rev OTHER --tool other
一般来说,即使没有花哨的合并工具,我也只是进行正常的合并,然后在编辑器中访问有冲突的文件并搜索冲突标记(>>>>)并用我的智慧来决定使用哪些代码我想在那些地方作为合并代码。
<<<<<, ======, >