Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 在SourceTree窗口中编辑提交消息(已推送到远程)_Git_Atlassian Sourcetree - Fatal编程技术网

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

Git 在SourceTree窗口中编辑提交消息(已推送到远程),git,atlassian-sourcetree,Git,Atlassian Sourcetree,如何在不接触命令行的情况下在SourceTree中编辑错误的提交消息 其他详细信息: 这不是最新的提交 一切都被推到了垃圾桶里 这是一个私人存储库,我是唯一的合作者 我不介意丢失以前的任何提交,因为我可以随时重新提交它们 然而,我不想丢失任何代码修改 结果: 根据您的评论和回复,目前似乎不可能,因此我将创建一个新的存储库并从头开始。谢谢大家的帮助 更新 注意:这个答案最初是针对旧版本的SourceTree for Windows编写的,现在已经过时了。 对于当前版本的SourceTree

如何在不接触命令行的情况下在SourceTree中编辑错误的提交消息

其他详细信息:

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

  • 根据您的评论和回复,目前似乎不可能,因此我将创建一个新的存储库并从头开始。谢谢大家的帮助
更新 注意:这个答案最初是针对旧版本的SourceTree for Windows编写的,现在已经过时了。

对于当前版本的SourceTree for Windows,1.5.2.0。出于历史的考虑,我把这个答案留下了

原始答案 因为我使用的是Windows,所以我没有命令行工具,也不知道如何使用:(这是解决问题的唯一方法吗?GUI没有涵盖git的所有功能?-

关于Git GUI,不,它们没有涵盖Git的所有功能它们甚至没有接近,Git足够灵活,可以从命令行获得多种解决方案

SourceTree实际上可能已经随msysgit bash shell一起提供,或者它可能能够使用标准的Windows命令shell。无论哪种方式,您都可以通过单击终端按钮从SourceTree打开它:

您可以在此处设置SourceTree使用的终端(bash或Windows):

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

  • 右键单击SourceTree并选择“将当前分支重置为此提交”,然后从下拉列表中选择“硬重置”选项,在SourceTree中对错误提交执行硬重置
  • 单击提交按钮,然后单击
  • 点击底部的复选框,上面写着“修改最新提交”
  • 对邮件进行所需的更改,然后再次单击“提交”。瞧
  • 关于:

    如果因为它已经被推到Bitbucket而不可能,我不介意创建一个新的存储库并重新开始

    这是否意味着你是唯一一个参与回购的人?这很重要,因为改变回购历史(比如修改承诺)并非小事不会给您的合作者带来问题。但是,假设您是唯一从事回购工作的人,那么您接下来要做的就是将更改的历史强制推送到远程

    但是,请注意,由于您对错误的提交进行了硬重置,因此强制推送会导致您丢失之前完成的所有工作。如果没有问题,那么您可能需要在命令行中使用以下命令来执行强制推送,因为我在SourceTree中找不到执行此操作的选项:

    git push remote-repo head -f
    
    这还假设BitBucket允许您强制推式回购


    无论如何,你应该真正从命令行学习如何使用Git,这将使你更加精通Git。#ProTip,使用msysgit并在终端属性中打开快速编辑模式,这样你就可以双击高亮显示一行文本,右键单击复制,然后再次右键单击粘贴。这非常快。

    teps编辑上一次提交的提交消息(,它是 不是使用Windows版本1.5.2.0的SourceTree提交的最新版本

    第一步 选择要编辑的提交之前的提交。 例如,如果我想编辑带有消息“FOOBAR!”的提交,那么我需要 要选择紧随其后的提交,请执行以下操作:

    步骤2 右键单击所选提交,然后以交互方式单击重新设置子项的基础:

    步骤3 选择要编辑的提交,然后单击 在本例中,我选择带有消息“FOOBAR!”的提交:

    步骤4 编辑提交消息,然后单击
    OK
    “沙兹伯特!斯卡多什!”

    步骤5 返回交互式重新基准窗口时,单击
    OK
    以完成此操作 重新基准:

    步骤6 在这一点上,您将需要强制推进您的新更改,因为您已经重新调整了基础 提交您已推送的。但是,的当前1.5.2.0版本 SourceTree for Windows不允许强制推送GUI,因此 无论如何,您都需要从命令行使用Git才能做到这一点

    从GUI中单击
    终端
    ,打开终端

    步骤7 使用以下命令从终端强制推送

    git push origin <branch> -f
    
    git推送原点-f
    
    其中,
    是要推送的分支的名称,
    -f
    表示 强制推送。强制推送将覆盖您在服务器上的提交 远程回购,但这在你的情况下没关系,因为你说你不分享 你与其他人的回购协议


    就这样!完成了!在1.9.6.1版上。对于未推送提交

  • 单击以前提交的描述
  • 单击提交图标
  • 输入新的提交消息,并从提交选项下拉列表中选择“Ammend latest commit
  • 提交您的消息

  • 如果注释消息包含非英语字符,则使用user456814提供的方法,这些字符将替换为questio
    git commit --amend -m "new comment message"
    
    git push --force
    
    git rebase -i HEAD~n
    
    git push --force