git - Rebase "fixup"提交到之前的 merge 提交

标签 git git-rebase squash git-interactive-rebase

我执行了以下 merge :

A---B---C---E (HEAD, merge of C and D)
           /
      D---|

但我注意到 E 中的一些问题,并在 F 中修复了它们:

A---B---C---E---F (HEAD)
           /
      D---|

我想修改提交 E,以便它包含在 F 中所做的“修复”更改。

当我尝试 git rebase -p -i HEAD~2 时,它会尝试创建一个常规(不 merge ) 提交,甚至试图让我重新 -解决我在为 E 执行 merge 时已经解决的冲突。

我如何修复提交 E 以便它包含在 F 中所做的更改?

最佳答案

git reset --soft E
git commit --amend

应该够了。它将重新创建 merge 提交(使用与 E 不同的散列,我们称它为 E'),同时插入您在 E 之间所做的任何更改和 F

关于git - Rebase "fixup"提交到之前的 merge 提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59457061/

相关文章:

git - .gitignore 文件属于哪里?

svn - git svn rebase : Incomplete data: Delta source ended unexpectedly

git - 允许在 git rebase 中 merge 不相关的历史

git - Git merge --squash 和 --no-commit 之间的区别

java - 如何在 JGit 中 merge ?

java - 如何使用 JGit 获取存储库中每个文件的更改次数?

git - 如何一次 rebase 多个分支(具有相同的基提交)?

rebase 后 Git 分支已经 fork ,为什么要 rebase?

git - `--squash` 和 `--no-ff --no-commit` 有什么区别?

git 与 --no-ff 和 --squash merge