在交互式变基时,将更改移动到其他提交

时间:2013-12-19 09:26:13

标签: git git-rebase

在清理(即大部分压缩)某些更大功能的历史时,我经常遇到以下情况:

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

假设现在我想使用交互式rebase移动change B.1来提交A.到目前为止我找到的唯一方法就是:

  1. 开始rebase -i
  2. 编辑提交B
  3. 在tmp提交中拆分提交B并提交B(reset HEAD^然后add -p
  4. 开始rebase -i
  5. 提交A中的修复tmp提交
  6. 这需要两个rebase并且非常麻烦。另外,我必须在拆分时重写提交B的提交消息。

    有没有更好/更有效的方法来实现这一目标?

1 个答案:

答案 0 :(得分:2)

可能不是一个重大改进,但

  1. git rebase -i A^
  2. git cherry-pick --no-commit B
  3. git add -p
  4. git commit --amend
  5. git reset --hard
  6. git rebase --continue
  7. 将是另一种选择。