首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在git (我推送的)中编辑不正确的提交消息?

如何在git (我推送的)中编辑不正确的提交消息?
EN

Stack Overflow用户
提问于 2009-01-19 11:56:24
回答 5查看 135.6K关注 0票数 156

我想要在历史中更深入地修改提交消息,并且我已经推送了许多新的提交。

如何更改提交消息?有可能吗?

EN

回答 5

Stack Overflow用户

发布于 2012-10-17 05:31:46

目前,git replace可能可以做到这一点。

详细信息:创建一个临时工作分支

代码语言:javascript
复制
git checkout -b temp

重置为要替换的提交

代码语言:javascript
复制
git reset --hard <sha1>

用正确的消息修改提交

代码语言:javascript
复制
git commit --amend -m "<right message>"

用新的提交替换旧的提交

代码语言:javascript
复制
git replace <old commit sha1> <new commit sha1>

回到你所在的分支

代码语言:javascript
复制
git checkout <branch>

删除临时分支

代码语言:javascript
复制
git branch -D temp

代码语言:javascript
复制
guess

好了。

票数 29
EN

Stack Overflow用户

发布于 2013-01-29 21:02:12

您可以使用git rebase -i (针对您所分支的分支) 'i‘进行交互。

将您希望更改的提交注释旁边的pick替换为r (或reword),保存并退出,完成后即可进行编辑。

git push一次,你就完成了!

票数 19
EN

Stack Overflow用户

发布于 2017-01-07 14:56:35

假设你有这样一棵树:

代码语言:javascript
复制
dd2e86 - 946992 - 9143a9 - a6fd86 - 5a6057 [master]

首先,checkout一个临时分支:

代码语言:javascript
复制
git checkout -b temp

temp分支上,对要更改其消息的提交进行reset --hard (例如,该提交为946992):

代码语言:javascript
复制
git reset --hard 946992

使用amend更改消息:

代码语言:javascript
复制
git commit --amend -m "<new_message>"

在那之后,树将看起来像这样:

代码语言:javascript
复制
dd2e86 - 946992 - 9143a9 - a6fd86 - 5a6057 [master]
           \
            b886a0 [temp]

然后,将946992之前的所有提交从master提交到temp并提交它们,如果您还想更改它们的消息,请使用amend

代码语言:javascript
复制
git cherry-pick 9143a9
git commit --amend -m "<new_message>
...
git cherry-pick 5a6057
git commit --amend -m "<new_message>

树现在看起来像这样:

代码语言:javascript
复制
dd2e86 - 946992 - 9143a9 - a6fd86 - 5a6057 [master]
               \
                b886a0 - 41ab2c - 6c2a3s - 7c88c9 [temp]

现在强制将temp分支推送到远程:

代码语言:javascript
复制
git push --force origin temp:master

最后一步,在本地删除分支mastergit fetch origin从服务器拉取分支master,然后切换到分支master并删除分支temp

现在,您的本地和远程都将更新所有消息。

票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/457379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档