在SourceTree Windows中编辑提交消息(已经推送到远程)
如何在不触及命令行的情况下在SourceTree中编辑不正确的提交消息?
额外细节:
- 这不是最新的提交。
- 一切都已经推到Bitbucket。
- 这是一个私人存储库,我是唯一的合作者。
- 我不介意丢掉以前的任何提交,因为我可以随时重新提交它们。
- 但是我不想丢失任何代码修改。
结果:
- 由于目前根据你的意见和答复似乎不可能,我要创build一个新的存储库并从头开始。 感谢你的帮助!
以下是使用SourceTree for Windows版本1.5.2.0编辑之前提交( 不是最新提交 )的提交消息的步骤:
步骤1
在您要编辑的提交之前立即select提交。 例如,如果我想编辑提交消息“FOOBAR!” 那么我需要select它之前的提交:
第2步
右键单击所选提交,然后单击Rebase children...interactively
:
第3步
select您要编辑的提交,然后单击底部的Edit Message
。 在这种情况下,我select提交消息“FOOBAR!”:
步骤4
编辑提交消息,然后单击OK
。 在我的例子中,我添加了“SHAZBOT!SKADOOSH!”
第5步
当您返回到交互式底框窗口时,单击OK
以完成底框:
第6步
此时,您必须强制推送新的更改,因为您已经重新提交了已经推送的提交。 但是,目前的SourceTree for Windows 1.5.2.0版本不允许您通过GUI强行推送,因此无论如何您都需要从命令行使用Git来执行此操作。
点击GUI中的Terminal
以打开terminal。
第七步
从terminal用下面的命令强行推送,
git push origin <branch> -f
其中<branch>
是您要推送的分支的名称, -f
表示强制推送。 推力会覆盖你在远程仓库的提交,但是你的情况没问题,因为你说你没有与其他人分享你的仓库。
而已! 你完成了!
在版本1.9.6.1上。 对于UnPressed提交。
- 点击以前提交的描述
- 点击提交图标
- input新的提交信息,并从Commit options下拉菜单中select“ Ammend latest commit ”。
- 提交你的信息。
更新
注意:这个答案最初是针对Windows版本的SourceTree编写的,现在已经过时了。
查看我的新版本的SourceTree for Windows 1.5.2.0的 新答案 。 为了历史的目的,我将这个答案留下。
原始答复
因为我在Windows上我没有一个命令行工具,也不知道如何使用一个:(是唯一的方法来弄清楚?GUI不包括所有的git的function?
关于Git的graphics用户界面, 不,他们并没有涵盖Git的所有function 。 他们甚至不接近 。 我build议你检查一下如何在Git中编辑不正确的提交信息? ,Git足够灵活,从命令行有多种解决scheme。
SourceTree实际上可能已经与msysgit bash shell一起,或者它可以使用标准的Windows命令shell。 无论哪种方式,你通过单击terminalbutton从SourceTree打开它:
您可以在此设置SourceTree使用的terminal(bash或Windows):
一种解决SourceTree中问题的方法
话虽如此,你可以在SourceTree中做到这一点。 既然你在评论中提到你不介意“恢复到错误的提交”(我假设你实际上是指重置,这是Git中的一个不同的操作),那么这里是步骤:
- 在SourceTree中通过右键单击它并select
Reset current branch to this commit
,然后从下拉列表中select硬重置选项,在SourceTree中执行硬重置。 - 然后点击提交button
- 点击底部的“修改最新提交”checkbox。
- 对消息进行更改,然后再次单击“提交”。 瞧!
关于这个评论 :
如果因为已经推送到Bitbucket而无法实现,那么我不介意创build一个新的存储库并重新开始。
这是否意味着你是唯一一个从事回购工作的人? 这很重要,因为改变回购的历史不是微不足道的(比如通过修改提交),而不会给合作者带来问题。 但是,假设你是唯一一个从事回购工作的人,那么你想要做的下一件事情就是强制把你改变的历史logging推送到远程。
但请注意,因为您对错误的提交进行了重置,所以强制推送会导致您丢失之前发生的所有工作。 如果没关系,那么你可能需要在命令行使用以下命令来执行强制推送,因为在SourceTree中找不到选项:
git push remote-repo head -f
这也假定BitBucket将允许您强制推送回购。
不pipe怎样,你应该真的从命令行学习如何使用Git,它会让你更熟练的使用Git。 #ProTip,使用msysgit并打开terminal属性中的快速编辑模式,以便您可以双击高亮显示一行文本,右键单击复制,然后再次右键单击进行粘贴。 这很快。