在 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.
我正处于一个非常大的 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.