如何在 git 中编辑任何提交的提交消息? [复制]
Posted
技术标签:
【中文标题】如何在 git 中编辑任何提交的提交消息? [复制]【英文标题】:How do I edit the commit message of any commit in git? [duplicate] 【发布时间】:2011-04-25 19:29:24 【问题描述】:假设我有 3 个未推送的提交。现在我想更改第一次或第二次提交的提交消息(使用git commit --amend
将它们更改为第三次很简单)。该怎么做?
【问题讨论】:
这个有点像***.com/questions/3926768/…。我尝试(如下)查看如何编写commit --amend
脚本。让我知道它是否有效。
【参考方案1】:
要在子问题上反弹:是否有 git commit --amend
用于先前的提交(而不仅仅是最后一个),您可以尝试类似(尚未测试,但 Colin O'Dell 在 the comments 中提到为它写了一个脚本colinodell/git-amend-old):
git checkout -b tmp
git reset --hard HEAD~2
git commit -amend
git rebase --onto tmp HEAD@1 master
那就是:
x---x---x---x---x
^
|
(master*) (* = current branch)
git checkout -b tmp
x---x---x---x---x
^
|
(tmp*, master)
git reset --hard HEAD~2
x---x---x---x---x
^ ^
| |
(tmp*) (master)
git commit -amend
y (tmp*)
/
x---x---x---x---x
| ^
(HEAD@1) |
(master)
git rebase --onto tmp HEAD@1 master
(tmp)
y---x'---x' (master*)
/
x---x---x---x---x (only referenced in reflog)
【讨论】:
在rebase --onto
,见***.com/questions/1994463/…
何必呢? rebase -i 更简单
@CharlesB:我同意,rebase -i
更简单,但它也是交互式。这意味着您不能将其包含在脚本或对命令序列进行分组的别名中。
我创建了一个受此答案启发的 Bash 脚本:github.com/colinodell/git-amend-old 希望有人觉得它有用。
@ColinO'Dell 不错!我在答案中包含了指向您的脚本的链接,以提高知名度。【参考方案2】:
这是强大的git rebase -i
命令的工作。另请参阅 Git 书籍的 Interactive Rebasing 部分。
【讨论】:
可能是个愚蠢的问题,但git rebase -i
可以非交互使用吗?
不,不是这样。但是,git rebase -i
所做的一切(理论上)都可以使用其他可编写脚本的 Git 命令来完成。所以可以写一个脚本来修改之前的提交信息,但是我不知道这样的东西是否存在。
恭喜你获得第 15 枚金牌 ;) 你现在是一个真正的 git! (呃... git-guru,我的意思是)(我的意思是,关于工具名称 git 的大师)(我的意思是,你知道我的意思)
@VonC:谢谢,这是一种偷偷摸摸的方式!以上是关于如何在 git 中编辑任何提交的提交消息? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何使用“$ git commit”在消息开头引用问题(gitlab,github)? [复制]
如何在 git 分支中获取给定作者的提交消息历史记录? [复制]
如何在 Mercurial 中编辑不正确的提交消息? [复制]