在Sourcetree中如何合并两个以上的提交记录?

16

我有大约20个提交记录,这些提交记录是自从上一次推送到origin/master以来完成的。我之前从未有过多个分支,所有的提交都是在主分支(master)上完成的。我该如何将这20个提交压缩成一个提交,最好使用Sourcetree实现?我想这样做是为了只需推送一个提交到origin/master。

在Sourcetree中,我已经找到了使用交互式变基命令的方法。它会显示出我要压缩的确切提交列表。我尝试不断点击“压缩”按钮,直到所有提交被压缩成一个。但是当我点击“确定”后,只有最近的两个提交被压缩了。所以即使对话框似乎显示可以将多个提交压缩,实际上我无法让它正常工作。


1
这个问题也在Atlassian Answers上被问到过(https://answers.atlassian.com/questions/301907/interactive-rebase-in-sourcetree-windows-doesnt-work-properly-at-all)。目前还没有解决方案。 - Jon Onstott
1个回答

17
更简单的解决方案(比变基):
在日志条目中选择“origin/master”提交,单击“将重置为此提交”。

http://i.imgur.com/nWDzb6k.png

使用默认混合模式。

http://i.imgur.com/bTaS5KD.jpg

然后添加并提交:所有更改都将再次在一个新的提交中注册,您将能够推送。
有关更多信息,请参见git reset Demystified

谢谢,这就解决了。所以我猜它把所有自起点以来的更改都移动到了工作副本中?这是正确的吗? - mark-hahn
@mark-hahn 它重置索引,同时保持您的工作树不变,使您能够在新提交中再次注册所有修改。 - VonC
哦,我明白了。它将它们放入索引中,这就是所提交的内容。我习惯于直接从工作区提交。也许我还不太理解。我会继续研究的。 - mark-hahn
@mark-hahn 是的,http://git-scm.com/blog/2011/07/11/reset.html 是一个很好的资源,可以帮助理解 git reset - VonC
我可以像这个答案那样使用软件模式吗?有什么区别? - crokusek
@crokusek 是的,它通常用于压缩提交。另请参阅https://dev59.com/7G435IYBdhLWcg3wyzaa - VonC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接