我已经提交了git并随后推送。我想更改提交消息。如果我理解正确,这是不可取的,因为在我进行此类更改之前,可能有人从远程存储库中删除了内容。如果我知道没人拉过呢?
有办法做到这一点吗?
我已经提交了git并随后推送。我想更改提交消息。如果我理解正确,这是不可取的,因为在我进行此类更改之前,可能有人从远程存储库中删除了内容。如果我知道没人拉过呢?
有办法做到这一点吗?
当前回答
确保在正确的分支上进行更改
git checkout
#确保您在正确的分支上进行更改只是为了确定:
git checkout branchname
Then
git commit --amend -m "new message"
然后按下
git push --force
其他回答
git commit --amend
使用编辑提交消息打字键盘
git push --force
只需使用这两个命令即可更改上次推送的提交消息
-$gitcommit--modify-m“新提交消息。”-$git push—使用租约强制
案例1:未推送+最近提交:请参阅
案例2:已推送+最近提交:请参阅
案例3:未推送+旧提交:请参阅
案例4:已推送+旧提交:请参阅
这对我来说很好,
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
你已经完成了
需要注意的是,如果您对多个引用使用push-force,那么它们都将被修改。确保注意git repo的配置位置。幸运的是,通过指定要更新的单个分支,有一种方法可以稍微保护这个过程。阅读git手册页:
注意--力应用于所有被推动的ref,因此使用它具有push.default设置为匹配或多个push使用remote.*.push配置的目标可能会覆盖其他引用比当前分支(包括严格落后的本地引用它们的远程对应物)。要强制推送仅一个分支,请使用+在refspec前面推送(例如git推送原点+主推送强制推到主分支)。