冲突解决后如何将文件移回冲突状态?

Adr*_*ian 5 git git-merge-conflict

我有一个真正的冲突解决方案集,我想我会去尝试它,如果我失败了,那么我应该能够将文件恢复到它的冲突状态。但是,我似乎找不到回去的方法。git 仍处于 MERGING 状态,那么如何备份单个文件并重新解析?

tor*_*rek 4

首先,如果您认为您可能有一个不错的分辨率(或部分分辨率),请将文件复制到其他地方。:-) 然后运行:

\n\n

git checkout -m -- path

\n\n

--仅当文件path类似于有效git checkout选项时才需要该部分,例如,如果您要放回到冲突状态的文件被命名--theirs-f类似)。这将从三个输入(合并基础和两个分支头)重新创建文件的冲突标记变体,并将该文件写入工作树。

\n\n

请注意,您可以指定--conflict=merge(默认)样式,或--conflict=diff3样式。merge.conflictStyle这与中的设置相同.gitconfig,但仅适用于该一个文件和该一个签出。

\n\n

如果您(或git mergetool)使用了已在已解析变体上运行的合并工具git add,请注意,这会将文件带回冲突状态,即它将三个较高阶段条目恢复到索引中。您现在可以git mergetool再次运行,或者\xe2\x80\x94我个人偏好\xe2\x80\x94,一旦您确信它是正确的,只需手动编辑冲突文件和git add生成的工作树副本。

\n

  • @Marcos:如果您尚未处于合并状态,则“git checkout -m”的行为会有所不同。如果您仍然处于不完整的合并状态,即您尚未使用 `git commit` 或 `git merge --continue` 完成合并,您将运行 `git checkout -m -- README.md` 来恢复它到未合并状态。我不确定如果你也命名一个提交会发生什么。 (2认同)