Answers:
以下是使用Windows版本1.5.2.0的SourceTree编辑先前提交(不是最新提交)的提交消息的步骤。:
选择您要编辑的提交之前的提交。例如,如果我要编辑带有消息“ FOOBAR!”的提交,然后我需要选择它之前的提交:
右键单击所选提交,然后单击Rebase children...interactively
:
选择要编辑的提交,然后单击Edit Message
底部的。在这种情况下,我选择带有消息“ FOOBAR!”的提交:
编辑提交消息,然后单击确定OK
。在我的示例中,我添加了“ SHAZBOT!SKADOOSH!”。
返回交互式变基窗口时,单击OK
完成变基:
在这一点上,由于已经对已经推送的提交进行了重新基准化,因此您需要强制推送新的更改。但是,当前用于Windows的1.5.2.0版本的SourceTree不允许您强制通过GUI,因此无论如何您都需要从命令行使用Git。
Terminal
从GUI 单击以打开一个终端。
使用以下命令从终端强制推入,
git push origin <branch> -f
<branch>
您要推送的分支的名称在哪里,-f
意味着强制推送。强制推送将覆盖您在远程回购上的提交,但是在您的情况下这是可以的,因为您说过不与其他人共享回购。
而已!你完成了!
如果评论消息包含非英语字符,则使用user456814提供的方法,这些字符将被问号替换。(在sourcetree Ver2.5.5.0下测试)
所以我必须使用以下方法。
警告:如果其他成员撤消了提交,则下面的更改可能会对他们造成混乱。
步骤1:在sourcetree主窗口中,找到您的repo标签,然后点击“ 终端 ”按钮以打开git命令控制台。
第二步:
[情况A]:目标提交是最新的。
1)在git命令控制台中,输入
git commit --amend -m "new comment message"
2)如果目标提交已被推送到远程,则必须强制再次推送。在git命令控制台中,输入
git push --force
[情况B]:目标提交不是最新的。
1)在git命令控制台中,输入
git rebase -i HEAD~n
压缩最新的n次提交。例如,如果要编辑最后一条消息之前的消息,n为2。此命令将打开一个vi窗口,每行的第一个单词为“ pick ”,然后将该行的“ pick ”更改为“ reword ”您要编辑。然后,输入:wq
以保存并退出该vi窗口。现在,将打开一个新的vi窗口,您可以在此窗口中输入新消息。也使用:wq
保存并退出。
2)如果目标提交已被推送到远程,则必须强制再次推送。在git命令控制台中,输入
git push --force
最后:在sourcetree主窗口中,按F5
以刷新。
注意:此答案最初是针对Windows的较旧版本的SourceTree编写的,现在已经过时。
请参阅我对于当前版本的SourceTree for Windows 1.5.2.0的新答案。我将这个答案留作历史参考。
当我在Windows上时,我没有命令行工具,也不知道如何使用它:((这是将其整理出来的唯一方法吗?GUI不能涵盖git的所有功能吗?— 原始海报
关于Git GUI,不,它们不涵盖Git的所有功能。他们甚至都不接近。建议您查看如何在Git中编辑错误的提交消息中的答案之一。,Git足够灵活,可以从命令行提供多种解决方案。
SourceTree实际上可能已经带有msysgit bash shell,或者它可能能够使用标准的Windows命令shell。无论哪种方式,都可以通过单击“终端”按钮从SourceTree中打开它:
您可以在此处设置SourceTree使用哪个终端(bash或Windows):
话虽如此,这是在SourceTree中完成此操作的一种方法。既然您在注释中提到您不介意“恢复为错误的提交”(我假设您实际上是指重置,这是Git中的另一项操作),所以这里是步骤:
Reset current branch to this commit
,然后从下拉列表中选择hard reset选项,以将SourceTree硬重置为错误的提交。关于此评论:
如果由于已经将其推送到Bitbucket而不可能,则我不介意创建新的存储库并重新开始。
这是否意味着您是唯一从事回购工作的人?这很重要,因为在不给协作者造成麻烦的情况下更改回购的历史记录(例如通过修改提交)并非易事。但是,假设您是仓库的唯一工作人员,那么接下来要做的就是将更改后的历史记录强制推送到远程服务器。
但是请注意,由于您对错误的提交进行了硬重置,因此强行推送将导致您失去之前所做的所有工作。如果可以,那么您可能需要在命令行上使用以下命令进行强制推送,因为我无法在SourceTree中找到执行此操作的选项:
git push remote-repo head -f
这还假设BitBucket将允许您强制推送到存储库。
无论如何,您还是应该从命令行真正地学习如何使用Git,它将使您更加精通Git。#ProTip,使用msysgit并在终端属性中打开“快速编辑”模式,以便您可以双击以突出显示一行文本,右键单击以进行复制,然后再次右键单击以进行粘贴。很快。