【发布时间】:2017-03-13 09:24:43
【问题描述】:
我要更改其消息的提交已被推送,并且它在 5 次提交的中间。有没有办法编辑提交消息?编辑后,当有人已经拉取提交时会发生什么?
【问题讨论】:
-
您将创建不同的历史记录,因为如果您更改提交消息,您将获得标识该评论和随后所有内容的新哈希。我会首先确保您真的必须更改此提交消息,或者您是否可以忍受错误。
标签: git egit tortoisegit
我要更改其消息的提交已被推送,并且它在 5 次提交的中间。有没有办法编辑提交消息?编辑后,当有人已经拉取提交时会发生什么?
【问题讨论】:
标签: git egit tortoisegit
【讨论】:
通常不建议更改已经公开可用的提交。正如您自己意识到的那样,在其他人已经在其上工作时编辑此类提交可能会在其他人尝试发布他们的工作时导致冲突。
话虽如此,git rebase -i HEAD~5 将允许您以交互方式重新设置最近的五次提交。它将在您的编辑器中打开一个 ToDo 文件,允许您根据需要重写您的历史记录。其中,将有一个reword 选项,允许您更改特定提交的提交消息。您只需将上述提交前面的pick 更改为reword 并保存文件,git 会提示您输入新的提交消息。
但是请注意,您将创建一个全新的提交,如果您想发布它,您必须使用 --force 选项推送。
【讨论】:
不改变已推送的内容被认为是最佳做法。
但是,您可以使用 git rebase -i 编辑任何提交,然后选择 r (reword) 作为您要更改的提交。
如果你之前推送过,你需要用push -f(强制推送)推送它。
您将从该提交更改整个树并转发,因此所有其他已克隆存储库的人都需要执行git pull 以使其正确。如果他们有基于当前树的更改,你会让他们很难,所以最好的办法是让每个人都推送他们的更改,“冻结”存储库,然后在你推送后让它们再次拉取。
【讨论】: