壁球提交与合并分支之间的提交

时间:2018-09-30 18:46:42

标签: git squash

在分支BRANCH_SOMETHING上有这样的情况:

FFF - 6th commit
EEE - 5th commit
DDD - 4th commit
Y commit from master
X commit from master
CCC - 3rd commit
BBB - 2nd commit
AAA - 1st commit

如何仅压缩我的提交?

2 个答案:

答案 0 :(得分:2)

您必须运行的命令是git rebase -i AAA~(请注意~) 它将使用以下rebase程序打开您的默认文本编辑器:

pick AAA 1st commit
pick BBB 2nd commit
pick CCC 3rd commit
pick X commit from master
pick Y commit from master
pick DDD 4th commit
pick EEE 5th commit
pick FFF 6th commit

您必须将文本编辑为这样:

pick X commit from master
pick Y commit from master
pick AAA 1st commit
squash BBB 2nd commit
squash CCC 3rd commit
squash DDD 4th commit
squash EEE 5th commit
squash FFF 6th commit

保存并退出文本编辑器。

Git将运行,然后再次打开文本编辑器,使您有机会编辑提交消息:

# This is a combination of 6 commits.
# This is the 1st commit message:

1st commit 

# This is the commit message #2:

2nd commit

...

编辑提交消息,保存并退出。

最后,历史将如下所示:

GGG squashed commit
Y commit from master
X commit from master

请注意,您还可以将提交X和Y放置在被压缩的提交之后,相应地突出显示重新设置程序。

答案 1 :(得分:0)

您可以做两件事。 (考虑到您不想挤压主提交到您的提交中)

  • 两次提交

一次提交将squash 1,2,3次提交,另一次将压扁     4,5,6。

  • 应用一些分支魔术

您可以

  1. 撤消重新设置基础或合并(请参阅reflog),从而导致分支的当前结构(由插入您的分支之间的主节点提交)。
  2. 将所有提交压缩在一起。
  3. 进行基础调整或再次与母版合并。

如果当前的分支结构已经在遥控器上了,那么在以上述任何一种方式进行更改之后,您将不得不强制推送。