在清理(即主要压缩)一些更大功能的历史记录时,我经常遇到以下情况:
Commit A:
- change A.1
- change A.2
- change A.3
// EDIT: maybe some more commits
Commit B:
- change B.1
- change B.2
- change B.3
假设现在我想移动 change B.1
以使用交互式 rebase 提交 A。到目前为止,我找到的唯一方法是:
- 开始
rebase -i
- 编辑提交 B
- 在 tmp 提交和提交 B 中拆分提交 B(
reset HEAD^
然后add -p
) - 开始
rebase -i
- 修复提交 A 中的 tmp 提交
这需要两次 rebase 并且非常麻烦。另外,我必须在拆分时重写提交 B 的提交消息。
有没有更好/更有效的方法来实现这一点?
最佳答案
可能不是一个显着的改进,但是
git rebase -i A^
git cherry-pick --no-commit B
git add -p
git commit --amend
git reset --hard
git rebase --continue
将是另一种选择。
关于git - 交互式 rebase 时将更改移动到不同的提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20677725/