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

如何在不触及命令行的情况下在SourceTree中编辑不正确的提交消息?

额外细节:

  • 这不是最新的提交。
  • 一切都已经推到Bitbucket。
  • 这是一个私人存储库,我是唯一的合作者。
  • 我不介意丢失任何以前的提交,因为我可以随时重新提交它们。
  • 然而,我不想丢失任何有史以来的代码修改。
  • 结果:

  • 根据您的意见和答复,目前看起来似乎不可能,我将创建一个新的存储库并从头开始。 感谢你的帮助!

  • 以下是使用SourceTree for Windows版本1.5.2.0编辑之前提交( 不是最新提交 )的提交消息的步骤:

    步骤1

    您要编辑的提交之前立即选择提交。 例如,如果我想编辑提交消息“FOOBAR!” 那么我需要选择它之前的提交:

    在我想编辑的那个之前选择提交。

    第2步

    右键单击选定的提交,然后单击“ Rebase children...interactively

    选择“交互式地重新培训孩子”。

    第3步

    选择要编辑的提交,然后单击底部的Edit Message 。 在这种情况下,我选择提交消息“FOOBAR!”:

    选择您想要编辑的提交。

    步骤4

    编辑提交消息,然后单击OK 。 在我的例子中,我添加了“SHAZBOT!SKADOOSH!”

    编辑提交消息

    第5步

    当您返回到交互式底线窗口时,单击OK以完成底线:

    点击确定完成。

    第6步

    此时,您必须强制推送新的更改,因为您已重新提交了已提交的提交。 但是,目前的SourceTree for Windows 1.5.2.0版本不允许您通过GUI强行推送,因此无论如何您都需要从命令行使用Git才能完成此操作。

    点击GUI中的Terminal以打开终端。

    点击终端

    第7步

    从终端的力量推动下面的命令,

    git push origin <branch> -f
    

    其中<branch>是您要推送的分支的名称, -f意味着强制推送。 强制推送会覆盖您在远程仓库中的提交,但在您的情况下这没关系,因为您表示您并未与其他人分享您的仓库。

    而已! 你完成了!


    在版本1.9.6.1上。 对于UnPushed提交。

  • 点击以前提交的描述
  • 点击提交图标
  • 输入新的提交信息,并从Commit options下拉菜单中选择“ Ammend latest commit ”。
  • 提交你的信息。

  • 更新

    注意:这个答案最初是针对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中问题的方法

    话虽如此,这里有一种方法可以在SourceTree中实现。 既然你在评论中提到你不介意“恢复到错误的提交”(我假设你实际上是指重置,这在Git中是一个不同的操作),那么这里是步骤:

  • 在SourceTree中通过右键单击它并选择Reset current branch to this commit ,然后从下拉列表中选择硬重置选项,在SourceTree中执行硬重置。 在这里输入图像描述
  • 然后单击提交按钮
  • 点击底部的“修改最新提交”复选框。 在这里输入图像描述
  • 对消息进行更改,然后再次单击“提交”。 瞧!
  • 关于这个评论:

    如果因为它已经推到Bitbucket而无法实现,我不会介意创建一个新的存储库并重新开始。

    这是否意味着你是唯一一个从事回购工作的人? 这很重要,因为通过修改repo的历史记录(例如通过修改提交)并不会对合作者造成问题,这不是微不足道的。 然而,假设你是唯一一个从事回购工作的人,那么你想要做的下一件事就是强迫你将已更改的历史推送到远程。

    但请注意,因为您对有故障的提交进行了重置,所以强制推送会导致您失去之前发生的所有工作。 如果没关系,那么你可能需要在命令行使用以下命令来执行强制推送,因为我无法在SourceTree中找到选项:

    git push remote-repo head -f
    

    这也假设BitBucket将允许你强制推送回购。

    不管怎样,你应该真的从命令行学习如何使用Git,它会让你更熟练地使用Git。 #ProTip,使用msysgit并在终端属性中启用快速编辑模式,以便您可以双击以突出显示一行文本,右键单击以复制,然后再次右键单击以进行粘贴。 这很快。

    链接地址: http://www.djcxy.com/p/143.html

    上一篇: Edit a commit message in SourceTree Windows (already pushed to remote)

    下一篇: What are the benefits of learning Vim?