如何在不触及命令行的情况下在SourceTree中编辑不正确的提交消息?
其他详细信息:
结果:
答案 0 :(得分:371)
以下是编辑先前提交的提交消息的步骤( 是 使用 SourceTree for Windows 1.5.2.0版
在 之前选择要提交的提交 。 例如,如果我想用“FOOBAR!”消息编辑提交。然后我需要 选择它之前的提交:
右键单击所选提交,然后单击Rebase children...interactively
:
选择要编辑的提交,然后点击“{1}}” 底部。在这种情况下,我选择提交消息“FOOBAR!”:
编辑提交消息,然后单击Edit Message
。在我的例子中,我补充说
“SHAZBOT!SKADOOSH!”
当您返回交互式rebase窗口时,单击OK
完成
变基:
此时,您需要强制推送您的新更改,因为您已经重新定位 承诺你已经推了。但是,目前的1.5.2.0版本 SourceTree for Windows不允许您强制推送GUI,所以 无论如何你都需要从命令行使用Git才能做到这一点。
点击GUI中的OK
以打开终端。
使用以下命令从终端强制推送
Terminal
其中git push origin <branch> -f
是您要推送的分支的名称,<branch>
表示
强迫推。强制推送 将覆盖 您的提交
远程回购,但你的情况没问题,因为你说你没有分享
你和其他人的回购。
就是这样!你已经完成了!
答案 1 :(得分:28)
版本1.9.6.1。对于UnPushed提交。
答案 2 :(得分:12)
注意:此答案最初是针对旧版本的SourceTree for Windows编写的,现已过时。
See my new answer,适用于当前版本的SourceTree for Windows, 1.5.2.0 。为了历史目的,我将这个答案留下了。
因为我在Windows上我没有命令行工具,也不知道如何使用它:(这是解决问题的唯一方法吗?GUI没有涵盖所有git的功能? - Original Poster
关于Git GUI, 不,它们不包括Git的所有功能 。 他们甚至没有接近 。 I suggest you check out one of the answers in How do I edit an incorrect commit message in Git?,Git非常灵活,可以从命令行中找到多种解决方案。
SourceTree实际上可能已经带有msysgit bash shell,或者它可能能够使用标准的Windows命令shell。无论哪种方式,您都可以通过单击“终端”按钮从SourceTree打开它:
您可以在此处设置SourceTree使用的终端(bash或Windows):
话虽如此,这是您在SourceTree中可以做到的一种方式。既然你提到in the comments,你不介意“恢复到错误的提交”(我假设你实际上意味着重置,这是Git中的一个不同的操作),那么这里是步骤:
Reset current branch to this commit
并从下拉列表中选择硬重置选项,在SourceTree中对错误提交进行硬重置。 关于this comment:
如果它不可能因为它已被推送到Bitbucket,我不介意创建一个新的存储库并重新开始。
这是否意味着您是唯一一个处理回购的人?这很重要,因为在不给协作者带来问题的情况下更改仓库的历史(例如修改提交)并非易事。但是,假设您是唯一一个处理回购的人,那么接下来您要做的就是强行将您更改的历史记录推送到遥控器。
请注意,因为您对错误提交进行了硬重置,然后强制推送会导致您丢失之前的所有工作。如果没关系,那么您可能需要在命令行中使用以下命令来执行强制推送,因为我找不到在SourceTree中执行此操作的选项:
git push remote-repo head -f
这也假设BitBucket允许您强制推送回购。
你应该真的学习如何从命令行使用Git,它会让你更精通Git。 #ProTip,使用msysgit并在终端属性中打开“快速编辑”模式,这样就可以双击突出显示一行文本,右键单击进行复制,再次右键单击进行粘贴。这很快。
答案 3 :(得分:8)
如果注释消息中包含非英语字符,则使用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
最后:在源树主窗口中,按F5
刷新。