我有一个主分支。我开始研究这个分支上的一个功能(我忘了创建单独的分支并在这个分支上播放)。在我结束功能实现之前,我有十几个提交要使用虚拟名称等等...现在我想将此功能推送到我的主要来源。但我不想推动整个提交历史。有没有办法从git log“回滚”中间体?
答案 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
现在,您将进入一个编辑器,每个提交都有一行。您应该替换单词pick
。对于第一行,您将为所有其他edit
(或fixup
)键入f
(以便您可以更改提交消息)。因此,所有后者的提交都将被压缩到第一个提交中;并且将删除提交消息(因此只保留您编辑的提交消息)。
因此,您正在编辑的文件应如下所示:
edit 2fa588e start of devel
fixup c420848 bugfix
f 78c41af bugfix
f 6bff2f0 bugfix blah blah