2

例如,如果我们想将提交压缩HEAD到 commit HEAD~4,我们有一个选项,我们可以通过

  1. 将提交重置HEADHEAD~3
  2. 构建一个与我们的旧 HEAD 具有相同更改的临时提交(例如,temp
  3. 隐藏其他分阶段/非分阶段的更改
  4. temp与我们的旧人挤在一起HEAD~4
  5. 弹出我们隐藏的更改
  6. 再次构建提交作为较旧的提交(HEAD~3HEAD)。

还有其他更快更方便的方法吗?

4

1 回答 1

2

所以正如@jthill 所建议的,git 存在一个autosquash选项。

例如,在我的情况下,让最初的情况是,

$ git log --oneline --decorate
ddd4444 (HEAD, my-feature-branch) A fourth commit
ccc3333 A third commit
bbb2222 A second commit
aaa1111 A first commit
9999999 (master) Old stuff on master

我现在将添加我想要压缩的最近更改HEAD~4

$ git add .
$ git commit --fixup aaa1111
[my-feature-branch eee5555] fixup! A first commit

所以,我的历史现在看起来像:

$ git log --oneline --decorate
eee5555 (HEAD, my-feature-branch) fixup! A first commit
ddd4444 A fourth commit
ccc3333 A third commit
bbb2222 A second commit
aaa1111 A first commit
9999999 (master) Old stuff on master

现在变基使用autosquashby会在正确的位置$ git rebase --interactive --autosquash master自动选择提交。--fixup

在 rebase 并与 commit-message 编辑合并之后,您将成功地 rebase !

像魔术一样工作!:)

来源:思想机器人

于 2016-06-09T17:48:38.667 回答