Git 在无法正确解决冲突后,是否可以恢复文件的冲突?
假设我做了一个重基,100个文件有冲突。我必须一个接一个地解决它们。假设我已经解析了(N-1)个文件,我正在处理文件N。在处理了一段时间后,我发现我把文件搞砸了。所以我想重新解决这个问题。但我不想中止重新基址并再次进行重新基址,因为我不想再次解析(N-1)文件Git 在无法正确解决冲突后,是否可以恢复文件的冲突?,git,conflict,resolve,Git,Conflict,Resolve,假设我做了一个重基,100个文件有冲突。我必须一个接一个地解决它们。假设我已经解析了(N-1)个文件,我正在处理文件N。在处理了一段时间后,我发现我把文件搞砸了。所以我想重新解决这个问题。但我不想中止重新基址并再次进行重新基址,因为我不想再次解析(N-1)文件 是否可以恢复文件N的合并冲突,以便我可以从头开始重新解决它?可能不是一个很好的解决方案(看起来不太像git'ish),但这里有一种可能的方法: 将(N-1)个文件复制到临时目录 git rebase—中止 将(N-1)文件复制回git目录
是否可以恢复文件N的合并冲突,以便我可以从头开始重新解决它?可能不是一个很好的解决方案(看起来不太像git'ish),但这里有一种可能的方法:
假设您正在处理的文件名为
test.txt
,并且由于合并尝试,该文件已留下冲突标记,并且您在手动解决这些冲突时遇到了一些问题,那么您可以使用一些命令重新创建带有冲突标记的文件
作为背景,它有助于了解,当合并需要手动解决文件冲突时,它会在git
索引中保留该文件的三个不同副本(称为“阶段”)。阶段1是合并文件的两个版本的共同祖先,阶段2和阶段3是您尝试合并的两个分支的两个版本。一些但不是全部的git
实用程序理解引用这些条目的语法:
因此,您首先需要做的是在某处重新创建这三个文件的临时副本-我将在这里使用/tmp
,但这不是强制性的:
git cat-file -p :1:test.txt > /tmp/test.txt.1
git cat-file -p :2:test.txt > /tmp/test.txt.2
git cat-file -p :3:test.txt > /tmp/test.txt.3
然后,使用git
管道命令git merge file
使用适当的冲突标记重新创建文件。请注意,参数的顺序在这里很重要,如果您想在重新进行合并时引用该文件,那么最好保存您对该文件所做的工作
mv test.txt test.txt.broken
git merge-file -p /tmp/test.txt.2 /tmp/test.txt.1 /tmp/test.txt.3 > test.txt
这将使用冲突标记重新创建test.txt
(尽管没有通常包含的分支名称注释-如果您确实需要这些注释,您需要添加一些-L
参数-您可以键入git help merge file
以获取更多信息)
此时,您可以清理临时文件,并重新开始解决该文件中的冲突。记得在完成后添加git,然后继续处理剩下的文件。我相信你正在寻找git签出-合并--