【问题标题】:How to edit commit message of a pushed git commit如何编辑推送的 git commit 的提交消息
【发布时间】:2017-03-13 09:24:43
【问题描述】:

我要更改其消息的提交已被推送,并且它在 5 次提交的中间。有没有办法编辑提交消息?编辑后,当有人已经拉取提交时会发生什么?

【问题讨论】:

  • 您将创建不同的历史记录,因为如果您更改提交消息,您将获得标识该评论和随后所有内容的新哈希。我会首先确保您真的必须更改此提交消息,或者您是否可以忍受错误。

标签: git egit tortoisegit


【解决方案1】:

由于这是用 tortoisegit 标记的,我将向您展示如何在 TortoiseGit 中实现这一目标

  1. 转到提交日志
  2. 选择提交下面要编辑的提交并选择“Rebase ... to this”
  3. 变基对话框打开。首先选择“强制变基”,因为从 Git 的角度来看并不需要变基
  4. 然后选择提交并选择编辑
  5. 按下面的“开始变基”按钮
  6. 现在您可以编辑您的消息,然后按“修改”
  7. 在此推后。如果提交已被推送,那么您需要强制推送。检查推送对话框中的“已知更改”。

更新:更新此答案以从日志开始。这不是更容易,而是更好,不会导致冲突

【讨论】:

  • 也许从日志对话框开始变基更容易
  • 这可以做到吗,即使错误的提交已经在原点并且其他人已经拉了?当其他人拉出已编辑的提交时,它的行为如何?
  • 是的,因为你可以用 git 做任何事情,但其他人会很糟糕。不推荐
【解决方案2】:

通常不建议更改已经公开可用的提交。正如您自己意识到的那样,在其他人已经在其上工作时编辑此类提交可能会在其他人尝试发布他们的工作时导致冲突。

话虽如此,git rebase -i HEAD~5 将允许您以交互方式重新设置最近的五次提交。它将在您的编辑器中打开一个 ToDo 文件,允许您根据需要重写您的历史记录。其中,将有一个reword 选项,允许您更改特定提交的提交消息。您只需将上述提交前面的pick 更改为reword 并保存文件,git 会提示您输入新的提交消息。

但是请注意,您将创建一个全新的提交,如果您想发布它,您必须使用 --force 选项推送。

【讨论】:

    【解决方案3】:

    不改变已推送的内容被认为是最佳做法。

    但是,您可以使用 git rebase -i 编辑任何提交,然后选择 r (reword) 作为您要更改的提交。

    如果你之前推送过,你需要用push -f(强制推送)推送它。

    您将从该提交更改整个树并转发,因此所有其他已克隆存储库的人都需要执行git pull 以使其正确。如果他们有基于当前树的更改,你会让他们很难,所以最好的办法是让每个人都推送他们的更改,“冻结”存储库,然后在你推送后让它们再次拉取。

    【讨论】:

      猜你喜欢
      • 2011-06-29
      • 2012-04-26
      • 2023-03-12
      • 2010-10-02
      • 2015-07-04
      • 2012-06-08
      • 1970-01-01
      • 2011-11-27
      • 2012-05-30
      相关资源
      最近更新 更多