git 在SourceTree Windows中编辑提交消息(已推送到远程)

wwwo4jvm  于 2023-09-29  发布在  Git
关注(0)|答案(4)|浏览(196)

如何在SourceTree中编辑不正确的提交消息而不接触命令行?

其他详细信息:

  • 这不是最新提交。
  • 一切都已经推到Bitbucket。
  • 这是一个私人仓库,我是唯一的合作者。
  • 我不介意丢失任何以前的提交,因为我可以随时重新提交它们。
  • 但是我不想丢失任何曾经修改过的代码。
    结果:
  • 根据你的评论和回复,这似乎是不可能的,我将创建一个新的存储库,从头开始。谢谢大家的帮助!
oaxa6hgo

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以打开一个终端。

第七步

从终端强制推与以下命令,

git push origin <branch> -f

其中,<branch>是您要推送的分支的名称,-f表示强制推送。强制推送 * 将覆盖 * 你在远程仓库上的提交,但这在你的情况下是可以的,因为你说你没有与其他人共享你的仓库。
就是这样你完了!**

fhg3lkii

fhg3lkii2#

在版本1.9.6.1上。对于未推送的提交。
1.单击以前提交的描述
1.单击“提交”图标
1.输入新提交消息,在提交选项栏中选择【修改最新提交】。
1.提交你的信息。

mzaanser

mzaanser3#

如果评论消息中包含非英文字符,使用user456814提供的方法,这些字符将被问号替换。(在sourcetree Ver2.5.5.0下测试)
所以我必须使用以下方法。

注意事项:如果提交已被其他成员拉取,下面的更改可能会导致他们的混乱。
Step1:在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刷新。

gjmwrych

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中找不到这样做的选项:

git push remote-repo head -f

这也假设BitBucket允许你强制推送到回购。
你真的应该学习如何从命令行使用Git,这会让你更精通Git。#ProTip,使用msysgit并在终端属性中打开快速编辑模式,这样就可以双击高亮显示一行文本,右键复制,再次右键粘贴。很快的

相关问题