我有一个分支'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'
答案 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)
git rebase -i HEAD~<quantity of your commits>
(即git rebase -i HEAD~5
)txt
文件中,对于所有提交,将pick
关键字更改为squash
,但第一次提交(位于顶部)除外。对于最重要的一个,将其更改为reword
(这意味着您将在下一步中为此提交提供新注释)并单击“保存”!如果在vim中,请按esc
,然后输入wq!
并按Enter键保存。完成