【发布时间】:2020-12-02 08:05:50
【问题描述】:
我尝试将 master 合并到我的分支,但存在一些冲突。我删除了分支中的冲突文件并尝试再次合并,但它显示“已经是最新的”。
我要在 master 分支中合并的文件仍然存在。我想合并到我的分支的那些文件没有显示,但提交和合并一直说“已经是最新的”。
由于我是 git 新手,请帮忙解释一下情况。
【问题讨论】:
标签: git merge merge-conflict-resolution
我尝试将 master 合并到我的分支,但存在一些冲突。我删除了分支中的冲突文件并尝试再次合并,但它显示“已经是最新的”。
我要在 master 分支中合并的文件仍然存在。我想合并到我的分支的那些文件没有显示,但提交和合并一直说“已经是最新的”。
由于我是 git 新手,请帮忙解释一下情况。
【问题讨论】:
标签: git merge merge-conflict-resolution
删除分支上的这些文件可能是一个错误。您遇到了内容冲突(我将第 123 行从“foo”更改为“bar”,他们将第 123 行从“foo”更改为“omg”)到存在冲突(他们将第 123 行从“foo”更改为“ omg”,我说:删除整个文件)。
然而,奇怪的是你得到“已经是最新的”。现在合并的时候。看来你还没有说出你在那里所做的一切。你会得到“已经是最新的”。只有当master分支被认为已经完全合并到您的分支中时。从您所说的判断,您必须删除文件,然后提交该更改(文件删除)作为冲突解决方案。如果你这样做了,那么历史看起来像这样:
之前:
changeA - changeB - changeC[yourwork] --- (merge conflict)
/ /
some common /
state \ /
changeX - changeY - changeZ[master]
之后:
changeA - changeB - changeC ---- (merge+deletefiles)[yourwork]
/ /
some common /
state \ /
changeX - changeY - changeZ[master]
在这种状态下,尝试合并 master 什么都不做,因为它已经合并了,因此会出现“Already up to date”的消息。此外,在yourwork 分支上,文件丢失了,因为您删除了它们。在 master 上它们仍然存在,因为在 master 上没有删除这些文件的提交。
有趣的事实:如果你现在将你的分支合并到 master,文件也会从 master 中消失。
解决此问题的最佳方法可能是撤消合并提交(即 reset 您的分支到 changeC 并重做合并;或 revert merge+deletefiles 提交并重做合并)。
当您重新进行合并时,无论哪种方式,您都会再次遇到与以前相同的冲突。这一次,你应该 resolve 冲突:告诉 git 你想保留哪个版本的文件(而不是告诉 git 你根本不需要这些文件)。
【讨论】: