如何使用TortoiseGit更改错误的提交信息?

136
我该如何使用TortoiseGIT编辑提交消息?这个问题非常类似于这个问题,但我想使用TortoiseGit而不是控制台来完成,是否可能?

3个回答

204

如果提交是当前分支的最新版本,那么这很简单。

  1. 上下文菜单 -> Git Commit
  2. 勾选 "Amend Last Commit" 复选框
  3. 更正你的提交信息
  4. 确定

如果提交是其他分支的最新版本,则先切换到该分支。

  1. 上下文菜单 -> TortoiseGit -> Switch/Checkout
  2. 选择分支名称
  3. 确定
  4. 按照以上 1-4 步骤更正提交信息

如果提交在中间而没有任何合并,则需要重置、修改和挑选。

  1. 上下文菜单 -> TortoiseGit -> Log
  2. 选择提交 -> 上下文菜单 -> 重置
  3. 硬重置(这将丢弃所选提交以上包含的所有工作以及工作目录中未提交的任何更改
  4. 确定
  5. 按照以上 1-4 步骤更正提交信息
  6. 从头到它之前的一个提交选择 -> 上下文菜单 -> 挑选
  7. 继续

18
我非常想念TortoiseSVN的“编辑日志消息”功能。他们会增加这样的功能吗? - Benoit Blanchon
3
我不明白第六步该怎么做,你所说的“从头到它之上一个提交中选择”是指右键菜单中的选项吗?请给我进一步的信息。 - Flethuseo
16
因为我认为在提交代码的过程中,如果代码提交位于中间位置的话,建议会导致我放弃了之前几周所做的代码更改,所以我给它点了一个踩的。 - Samuel
8
警告:在重置到要修改的提交之前,请使用“创建分支于此版本”设置一个临时分支名称。否则,您有可能会丢失这一点以上的所有提交记录。(如果已经发生了这种情况,可以使用“git reflog”命令来检索它们)。 - Steve Pitchers
1
@StevePitchers,没错,这是答案应该用粗体标出的内容。 - Sharique Abdullah
显示剩余8条评论

26
对于提交在中间的情况,我强烈建议不要按照linquize提供的说明操作,可以使用TortoiseGit的git命令行而不会出现任何问题:Can I use command-line Git tools and TortoiseGit simultaneously?。这个YouTube视频解释得非常好:http://youtu.be/4YjKY0u9Z6I。基本上使用git rebase -i,然后简单地“重写”提交消息即可。
更新:我认为您可以从linquize建议的硬重置中检索丢失的提交,请参见Wayne在此处的答案:How can I reorder/combine commits using Git rebase?

9
同意。学习如何使用 git 花费了我难以置信的长时间,而 SVN 则非常简单。Git 的概念很简单,但是它的使用并不简单。 - Samuel
TortoiseGit还提供交互式变基,您不需要使用命令行来完成此操作。 - Peter
@Peter,如果你使用友好的编辑器(如Notepad++)而不是vim,那么通过命令行进行操作是相当可行的 :) - AntonK

20
我认为修改提交信息的最佳方法是使用TortoiseGit中的force rebase选项。请参见TortoiseGit如何重新排序提交(rebase)上的答案。同样的方法也可以用于编辑提交信息。
  • Upstream框中选择一个分支,其HEAD是您当前分支历史记录中的某个提交。如果您没有这样的分支,请从要编辑提交信息的提交中暂时创建一个。
  • 点击Force Rebase
  • 右键单击要编辑的提交,然后选择Edit选项。您可以选择编辑多个提交。
  • 点击Start Rebase按钮。
  • Rebase将在您标记为Edit的提交处暂停。
  • 在底部点击Commit Message选项卡并编辑消息
  • 点击Amend按钮以继续

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接