这是为了压缩最新的 n 次提交。例如,如果您想编辑最后一条消息之前的消息,n 为2。此命令将打开一个vi窗口,每行的第一个单词是“pick”,您可以将要编辑的行的“pick”更改为“reword”。然后,输入:wq保存并退出vi窗口。现在,一个新的vi窗口将打开,在这个窗口中您输入您的新消息。也可以使用:wq来保存和退出。
话虽如此,这里有一种方法可以在SourceTree中实现。既然你在评论中提到你不介意“恢复到错误的提交”(我假设你实际上是指重置,这在Git中是一个不同的操作),那么下面是步骤: 1.在SourceTree中对错误提交进行硬重置,方法是右键单击它并选择Reset current branch to this commit,然后从下拉列表中选择硬重置选项。
4条答案
按热度按时间oaxa6hgo1#
以下是使用SourceTree for Windows version 1.5.2.0编辑上一次提交(* 不是最近一次提交 *)的提交消息的步骤:
第一步
选择您要编辑的提交 * 之前的提交 *。例如,如果我想编辑带有消息“FOOBAR!“然后我需要选择它前面的提交:
第二步
右键单击选中的提交并单击
Rebase children...interactively
:第三步
选择你想要编辑的提交,然后点击底部的
Edit Message
。在本例中,我选择了带有消息“FOOBAR!“:第四步
编辑提交消息,然后单击
OK
。在我的例子中,我添加了“SHAZBOT!咔!”第五步
当您返回到交互式变基窗口时,单击
OK
以完成变基:第六步
此时,您需要强制推送新的更改,因为您已经对已经推送的提交进行了重新定基。但是,当前1.5.2.0版本的SourceTree for Windows不允许您通过GUI强制推送,因此无论如何都需要从命令行使用Git来执行此操作。
在GUI中单击
Terminal
以打开一个终端。第七步
从终端强制推与以下命令,
其中,
<branch>
是您要推送的分支的名称,-f
表示强制推送。强制推送 * 将覆盖 * 你在远程仓库上的提交,但这在你的情况下是可以的,因为你说你没有与其他人共享你的仓库。就是这样你完了!**
fhg3lkii2#
在版本1.9.6.1上。对于未推送的提交。
1.单击以前提交的描述
1.单击“提交”图标
1.输入新提交消息,在提交选项栏中选择【修改最新提交】。
1.提交你的信息。
mzaanser3#
如果评论消息中包含非英文字符,使用user456814提供的方法,这些字符将被问号替换。(在sourcetree Ver2.5.5.0下测试)
所以我必须使用以下方法。
注意事项:如果提交已被其他成员拉取,下面的更改可能会导致他们的混乱。
Step1:在sourcetree主窗口,找到repo标签页,点击【终端】按钮,打开git命令控制台。
第二步:
**1)**在git命令控制台中,输入
**2)**如果目标提交已经推送到远程,则需要再次强制推送到远程。在git命令控制台中,输入
**1)**在git命令控制台中,输入
这是为了压缩最新的 n 次提交。例如,如果您想编辑最后一条消息之前的消息,n 为2。此命令将打开一个vi窗口,每行的第一个单词是“pick”,您可以将要编辑的行的“pick”更改为“reword”。然后,输入
:wq
保存并退出vi窗口。现在,一个新的vi窗口将打开,在这个窗口中您输入您的新消息。也可以使用:wq
来保存和退出。**2)**如果目标提交已经推送到远程,则需要再次强制推送到远程。在git命令控制台中,输入
最后:在sourcetree主窗口中,按
F5
刷新。gjmwrych4#
更新
注意:此答案最初是针对旧版本的SourceTree for Windows编写的,现在已过时。
See my new answer适用于当前版本的SourceTree for Windows,1.5.2.0。我把这个答案留给历史。
原始应答
因为我在Windows上,我没有命令行工具,也不知道如何使用:(这是解决这个问题的唯一方法吗?)GUI没有覆盖所有的git功能?- 原创海报
关于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问题的一种方法
话虽如此,这里有一种方法可以在SourceTree中实现。既然你在评论中提到你不介意“恢复到错误的提交”(我假设你实际上是指重置,这在Git中是一个不同的操作),那么下面是步骤:
1.在SourceTree中对错误提交进行硬重置,方法是右键单击它并选择
Reset current branch to this commit
,然后从下拉列表中选择硬重置选项。1.单击“提交”按钮,然后
1.点击底部的复选框“Amend latest commit”。
1.对邮件进行所需的更改,然后再次单击“提交”。瞧!
关于这一评论:
如果因为它已经被推送到Bitbucket而不可能,我不介意创建一个新的存储库并重新开始。
这是不是意味着你是唯一一个在回购上工作的人?这一点很重要,因为在不给协作者带来问题的情况下更改存储库的历史记录(比如修改提交)并不是一件小事。然而,假设你是唯一一个在仓库上工作的人,那么你要做的下一件事就是强制将你改变的历史推送到远程。
但是要注意,因为你对错误的提交做了一个硬重置,那么强制推送会导致你丢失之前在它之后的所有工作。如果可以的话,那么你可能需要在命令行中使用以下命令来执行强制推送,因为我在SourceTree中找不到这样做的选项:
这也假设BitBucket允许你强制推送到回购。
你真的应该学习如何从命令行使用Git,这会让你更精通Git。#ProTip,使用msysgit并在终端属性中打开快速编辑模式,这样就可以双击高亮显示一行文本,右键复制,再次右键粘贴。很快的