在git中分支所有提交的分支

时间:2015-01-13 21:58:50

标签: git squash

假设我在master中的最后一次提交的功能分支中有许多提交

... - last_commit_in_master - C1 - C2 - .. - C100

现在我想将所有这些提交合并为一个。

我知道一个解决方案:

  • git rebase -i master
  • 替换除第一个之外的所有选择。 Yoohoo,vim中有2,s/pick/squash/。 < - 这是我不喜欢每次都做的一步
  • 选择新的提交名称。

有没有办法更轻松?

2 个答案:

答案 0 :(得分:1)

不是做壁球,而是使用fixup替换除第一个之外的每一个,然后你不必选择一个新的提交名称,它只是将它们全部放在同一个提交中。

答案 1 :(得分:1)

如果要将所有提交合并为一个,并且需要提交消息和上次提交的时间。

git reset --soft $(git merge-base HEAD master)
git commit -c ORIG_HEAD

(如果您想对其进行调整,可以重新编辑该消息。)

这不会改变。在单独的步骤中做到这一点。