【问题标题】:Recover initial list of merge conflicts恢复合并冲突的初始列表
【发布时间】:2019-09-01 18:32:46
【问题描述】:

当 git 在合并时遇到冲突时,会显示一个列表,其中每个条目都以CONFLICT 开头,并包含有关冲突原因的信息,例如(renamed/deleted)

我正在寻找一种在重新启动机器或仅关闭 CLI 后检索此准确列表的方法。

当然有:

git diff --name-only --diff-filter=U

但是,这不包含有关冲突原因的信息,因此找出 50 多个文件比重置 git 和重做合并更费力。

这可以实现吗,例如使用reflog

编辑:请注意,这个问题专门针对所描述的列表,我不是要求其他解决方案来解决合并冲突。

【问题讨论】:

  • 不幸的是,Git 在检测到重命名/重命名冲突后丢弃了一些重要信息。如果只有一个这样的冲突,它是可以恢复的,否则就很棘手。 (我认为这也适用于重命名/删除冲突——一般来说,重命名并没有完全正确记录。)
  • 我尝试重现类似的冲突以更好地分析情况。 @Mär,你能告诉我你正在使用的 Git 版本吗?
  • @padawin 版本:2.21.0.windows.1,但是在您决定深入研究之前 - 我怀疑一旦 CLI 输出不再可用,@torek 可能是正确的.
  • 公平,对不起。
  • 别担心。此外,您的回复可能对其他人有所帮助。

标签: git git-merge git-reflog


【解决方案1】:

在合并状态下,如果你运行git status,你会在Unmerged paths部分下找到文件,这些是你的冲突文件(根据冲突的类型,文件将被标记为“都已修改"、"都添加了"、"都删除了"...)。

为了解决一般的冲突,如果您使用git mergetool,它将自动检查冲突文件。

【讨论】:

  • git status 没有检索到确切的列表,它是最初在合并冲突时获得的 CLI 消息的子集。
  • 抱歉,我改写了更准确的措辞(在实际发生冲突并且没有被记忆回答之后......),整个列表在“未合并路径”部分下。
  • 如上所述,这与我要求的列表不同。我知道git status,但它不包括冲突的原因,我特别要求包含以下条目的列表:CONFLICT (rename/rename): Rename <filepath> -> <filepath> in <branch>。对于git status,我没有得到这些信息。我会赞成你的努力,因为它可能会解决某人对git merge 的问题,但它不能回答我的问题。
猜你喜欢
  • 1970-01-01
  • 2019-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-18
相关资源
最近更新 更多