在推送之前将多个提交合并为一个

时间:2014-10-23 16:11:21

标签: git

我有一个主分支。我开始研究这个分支上的一个功能(我忘了创建单独的分支并在这个分支上播放)。在我结束功能实现之前,我有十几个提交要使用虚拟名称等等...现在我想将此功能推送到我的主要来源。但我不想推动整个提交历史。有没有办法从git log“回滚”中间体?

3 个答案:

答案 0 :(得分:3)

由于你有12次提交,它可能是最快的

git reset --soft @{u}
git commit -m "YOUR COMMIT MESSAGE"
git push

这将压缩任意数量的提交,而无需在每次提交的基础上执行任何操作。

答案 1 :(得分:0)

使用壁球功能考虑git rebase。请参阅manpage

答案 2 :(得分:0)

您要做的是squash您的提交。假设自你开始以来你做了10次提交;然后你会做:

git rebase -i HEAD~10
  • -i:互动式变基
  • HEAD~10:从当前的第10次提交(HEAD)开始

现在,您将进入一个编辑器,每个提交都有一行。您应该替换单词pick。对于第一行,您将为所有其他edit(或fixup)键入f(以便您可以更改提交消息)。因此,所有后者的提交都将被压缩到第一个提交中;并且将删除提交消息(因此只保留您编辑的提交消息)。

因此,您正在编辑的文件应如下所示:

edit  2fa588e start of devel
fixup c420848 bugfix
f     78c41af bugfix
f     6bff2f0 bugfix blah blah
相关问题