我想要在历史中更深入地修改提交消息,并且我已经推送了许多新的提交。
如何更改提交消息?有可能吗?
发布于 2012-10-17 05:31:46
目前,git replace可能可以做到这一点。
详细信息:创建一个临时工作分支
git checkout -b temp
重置为要替换的提交
git reset --hard <sha1>
用正确的消息修改提交
git commit --amend -m "<right message>"
用新的提交替换旧的提交
git replace <old commit sha1> <new commit sha1>
回到你所在的分支
git checkout <branch>
删除临时分支
git branch -D temp
推
guess
好了。
发布于 2013-01-29 21:02:12
您可以使用git rebase -i
(针对您所分支的分支) 'i‘进行交互。
将您希望更改的提交注释旁边的pick
替换为r
(或reword
),保存并退出,完成后即可进行编辑。
再git push
一次,你就完成了!
发布于 2017-01-07 14:56:35
假设你有这样一棵树:
dd2e86 - 946992 - 9143a9 - a6fd86 - 5a6057 [master]
首先,checkout
一个临时分支:
git checkout -b temp
在temp
分支上,对要更改其消息的提交进行reset --hard
(例如,该提交为946992
):
git reset --hard 946992
使用amend
更改消息:
git commit --amend -m "<new_message>"
在那之后,树将看起来像这样:
dd2e86 - 946992 - 9143a9 - a6fd86 - 5a6057 [master]
\
b886a0 [temp]
然后,将946992
之前的所有提交从master
提交到temp
并提交它们,如果您还想更改它们的消息,请使用amend
:
git cherry-pick 9143a9
git commit --amend -m "<new_message>
...
git cherry-pick 5a6057
git commit --amend -m "<new_message>
树现在看起来像这样:
dd2e86 - 946992 - 9143a9 - a6fd86 - 5a6057 [master]
\
b886a0 - 41ab2c - 6c2a3s - 7c88c9 [temp]
现在强制将temp分支推送到远程:
git push --force origin temp:master
最后一步,在本地删除分支master
,git fetch origin
从服务器拉取分支master
,然后切换到分支master
并删除分支temp
。
现在,您的本地和远程都将更新所有消息。
https://stackoverflow.com/questions/457379
复制相似问题