重写期间合并冲突 (git rebase -i)

ahi*_*ahi 2 git rebase

看来我对git缺乏一些了解。

我目前正在进行广泛的

git rebase -i --root
Run Code Online (Sandbox Code Playgroud)

在 origin/main(master) 上,这不是一个分支。

  • 提交不会重新排序
  • 有几个合并提交到 main 中

我的待办事项文件仅包含

  • 挑选和
  • 改写,

因为必须更改许多提交消息才能通过提交 linting。

为什么我必须手动解决此类合并冲突?

CONFLICT (content): Merge conflict in file1
CONFLICT (content): Merge conflict in file2
Run Code Online (Sandbox Code Playgroud)

我希望更改提交消息应该可以独立于代码库中的更改。

原因之一可能是过去的强制更新吗?

eft*_*ft0 6

因为您没有使用--rebase-merges,所以您错过了更改的合并(例如冲突解决)...这导致了 rebase 中的当前冲突。如果您只对提交进行重写(并且不会更改任何文件),您应该尝试:

git rebase --rebase-merges -i --root
Run Code Online (Sandbox Code Playgroud)

然后,每次遇到冲突时(例如在最初遇到冲突的某些合并提交中),您可以执行此操作以重用原始冲突解决方案,而无需执行任何其他工作:

git restore --staged --worktree --source=REBASE_HEAD -- .
git rebase --continue
Run Code Online (Sandbox Code Playgroud)

直到rebase完成。并且,如果不明显,则在执行变基时不得在文件中引入任何新更改,因为使用此功能会在以后提交时删除存在冲突的这些更改。