【问题标题】:after i delete conflicting files, the merge doesn't realise files in source branch to merge删除冲突文件后,合并没有实现源分支中的文件进行合并
【发布时间】:2020-12-02 08:05:50
【问题描述】:

我尝试将 master 合并到我的分支,但存在一些冲突。我删除了分支中的冲突文件并尝试再次合并,但它显示“已经是最新的”。

我要在 master 分支中合并的文件仍然存在。我想合并到我的分支的那些文件没有显示,但提交和合并一直说“已经是最新的”。

由于我是 git 新手,请帮忙解释一下情况。

【问题讨论】:

    标签: git merge merge-conflict-resolution


    【解决方案1】:

    删除分支上的这些文件可能是一个错误。您遇到了内容冲突(我将第 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 你根本不需要这些文件)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-20
      • 2020-06-15
      • 2019-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多