如何将两个提交合并为一个提交?

时间:2012-09-20 23:56:41

标签: git merge branch git-svn rebase

我有一个分支'firstproject',有2次提交。我想摆脱这些提交并使它们显示为单个提交。

命令git merge --squash听起来很有希望,但是当我运行git merge --squash时,我的终端只会显示该命令的选项。什么是正确的命令?

Commit 1:
Added 'homepage.html'
Added 'contacts.html'

Commit 2:
Added 'homepage.php'
Added 'homepage.php'
Deleted 'homepage.html'
Deleted 'contacts.html'

2 个答案:

答案 0 :(得分:38)

像我这样健忘的懒人简单版本:

  

git rebase -i HEAD~3或多次提交而不是3次。

     

转过来

pick YourCommitMessageWhatever
pick YouGetThePoint
pick IdkManItsACommitMessage
     

进入这个

pick YourCommitMessageWhatever
s YouGetThePoint
s IdkManItsACommitMessage
     

并执行一些操作,然后点击esc然后点击enter以保存   变化。 [1]

当下一个屏幕出现时,摆脱那些垃圾#行[2]并创建一个新的提交消息,然后执行相同的escape enter操作。 [1]

哇,你的提交次数较少。或者你刚刚打破了一切。

[1] - 或者与你的git配置一起使用的任何东西。根据我的设置,这只是一个有效的序列。

[2] - 你会看到一些像# this is your n'th commit这样的东西,你的原始提交就在这些消息的正下方。您想要删除这些行,并创建一个提交消息,以反映您要合并到的n次提交的意图。

答案 1 :(得分:11)

  1. 检查您的分支并计算所有提交的数量。
  2. 打开git bash并写下:git rebase -i HEAD~<quantity of your commits>(即git rebase -i HEAD~5
  3. 在已打开的txt文件中,对于所有提交,将pick关键字更改为squash,但第一次提交(位于顶部)除外。对于最重要的一个,将其更改为reword(这意味着您将在下一步中为此提交提供新注释)并单击“保存”!如果在vim中,请按esc,然后输入wq!并按Enter键保存。
  4. 提供意见。
  5. 打开Git并制作&#34;取全部&#34;看到新的变化。
  6. 完成