我已经提交了git并随后推送。我想更改提交消息。如果我理解正确,这是不可取的,因为在我进行此类更改之前,可能有人从远程存储库中删除了内容。如果我知道没人拉过呢?

有办法做到这一点吗?


当前回答

要编辑除最近提交以外的提交,请执行以下操作:

步骤1:git rebase-i HEAD~n为受影响的最后n次提交执行交互式rebase。(即,如果您想将提交消息3改回提交,请执行gitrebase-i HEAD~3)

git将弹出一个编辑器来处理这些提交,请注意以下命令:

#  r, reword = use commit, but edit the commit message

这正是我们需要的!

步骤2:将要更新消息的提交的pick更改为r。不要在此处更改提交消息,它将被忽略。下一步你会这么做。保存并关闭编辑器。

请注意,如果您编辑了重新命名的“计划”,但它没有开始允许您重命名文件的过程,请运行:

git rebase --continue

如果要更改用于交互式会话的文本编辑器(例如,从默认vi更改为nano),请运行:

GIT_EDITOR=nano git rebase -i HEAD~n

第三步:Git将为您之前的每个修订弹出另一个编辑器。根据需要更新提交消息,然后保存并关闭编辑器。

步骤4:更新所有提交消息后。您可能需要执行gitpush-f来更新远程。

其他回答

这对我来说很好,

git签出原点/分支名称

如果您已经在分支中,那么最好进行拉入或重入

git pull

or

git -c core.quotepath=false fetch origin --progress --prune

稍后您可以简单地使用

git commit --amend -m "Your message here"

或者如果您想打开文本编辑器,请使用

git commit --amend

如果你有很多评论,我更喜欢使用文本编辑器。您可以使用命令设置首选文本编辑器

git config --global core.editor your_preffered_editor_here

无论如何,当您更改完提交消息后,保存并退出

然后运行

git push --force

你已经完成了

命令1您需要使用以下命令更改提交消息gitcommit--modify-m“新的正确消息”命令2添加新消息后,执行以下命令git push-f origin<your_branch_name>

确保在正确的分支上进行更改

git checkout 

#确保您在正确的分支上进行更改只是为了确定:

git checkout branchname

Then

git commit --amend -m "new message"

然后按下

git push --force

需要注意的是,如果您对多个引用使用push-force,那么它们都将被修改。确保注意git repo的配置位置。幸运的是,通过指定要更新的单个分支,有一种方法可以稍微保护这个过程。阅读git手册页:

注意--力应用于所有被推动的ref,因此使用它具有push.default设置为匹配或多个push使用remote.*.push配置的目标可能会覆盖其他引用比当前分支(包括严格落后的本地引用它们的远程对应物)。要强制推送仅一个分支,请使用+在refspec前面推送(例如git推送原点+主推送强制推到主分支)。

git commit --amend

使用编辑提交消息打字键盘

git push --force