一尘不染

如何修改现有的、未推送的提交消息?

git

我在提交消息中写了错误的内容。

如何更改消息?提交尚未推送。


阅读 431

收藏
2021-12-31

共1个答案

一尘不染

修改最近的提交信息

git commit --amend

将打开您的编辑器,允许您更改最近提交的提交消息。此外,您可以直接在命令行中设置提交消息:

git commit --amend -m "New commit message"

……然而,这会使多行提交消息或小的更正输入变得更加麻烦。

确保你没有任何工作副本的修改上演这样做之前,否则它们可能会犯了。(未暂存的更改不会被提交。)

更改已推送到远程分支的提交消息

如果您已经将提交推送到远程分支,那么 - 在本地修改提交后(如上所述) - 您还需要使用以下命令强制推送提交]:

git push <remote> <branch> --force
# Or
git push <remote> <branch> -f

警告:强制推送将使用本地分支的状态覆盖远程分支。如果远程分支上存在本地分支中没有的提交,您丢失这些提交。

警告:修改您已经与其他人共享的提交时要谨慎。修改提交本质上是将它们重写为具有不同的SHA ID,如果其他人拥有您重写的旧提交的副本,则会出现问题。任何拥有旧提交副本的人都需要将他们的工作与您新重写的提交同步,这有时会很困难,因此请确保在尝试重写共享提交历史时与他人协调,或者避免重写共享提交共。


执行交互式变基

另一种选择是使用交互式变基。这允许您编辑要更新的任何消息,即使它不是最新消息。

要执行 Git 壁球,请执行以下步骤:

// n is the number of commits up to the last commit you want to be able to edit
git rebase -i HEAD~n

压缩提交后 - 选择e/r用于编辑消息:

在此处输入图片说明

关于交互式 rebase 的重要说明

当你使用git rebase -i HEAD~n可以有更多的比的n条提交。Git 将“收集”最后 n 次提交中的所有提交,如果在该范围之间的某处存在合并,您也会看到所有提交,因此结果将为 n + 。

好提示:

如果您必须为多个分支执行此操作,并且在修改内容时可能会遇到冲突,请设置git rerere并让 Git 自动为您解决这些冲突。

2021-12-31