在 git 变基期间重新尝试解决冲突

Reattempt conflict resolution during git rebase

我正处于一个非常大的 rebase 的中间,我正在解决冲突并使用 git rebase --continue.

在尝试解决多个文件的冲突时,我意识到我弄得有点乱。在我开始解决冲突之前,有没有一种简单的方法可以让我回到 rebase 的这个阶段?

显然我不想使用 git rebase --abort 并浪费我用于解决其他冲突的所有时间。

我发现了以下 Stack Overflow 问题,但可以通过一些更清晰的步骤来解决:

How to rollback a single conflict resolution during git rebase

特别是,-m 标志有什么作用? path/to/wrong 是我要变基的分支的名称、我要变基的分支还是对特定提交的引用?

要将单个文件重置为未合并的版本,请执行:

git checkout --merge path/to/file

如果您知道当前正在应用的提交的原始版本的提交哈希(如果不知道,请查看 reflog),您可以为该提交中更改的所有文件自动执行该过程:

#!/bin/bash

for file in $(git show --pretty=format: --name-only 812b091)
do
  git checkout --merge "$file"
done

来自 git-checkout 手册页:

-m, --merge

[snip]

When checking out paths from the index, this option lets you recreate the conflicted merge in the specified paths.