git:更改旧的提交消息而不会产生冲突

时间:2014-04-10 16:21:01

标签: git conflict git-rebase

我想使用:

更改一个非常旧的提交消息
git rebase -i sha1-of-commit^

这很好,我做git commit --amend并编辑消息,但是当我这样做时情况会变糟:

git rebase --continue

我遇到了多个冲突,但是不明白为什么因为过去显然已经完成了整个冲突解决方案,并且git应该继续前进,直到所有提交都被重新命名。

如何在不必处理这些旧冲突的情况下快速完成rebase?我只想更改一条简单的(和旧的)提交消息...

1 个答案:

答案 0 :(得分:7)

在名为/bin的{​​{1}}目录(或路径中的任何目录)中创建一个小脚本。 (只要名称以git-reword-commit开头,您就可以将其命名为。无论是否存在合并提交,都可以使用。

git-

要使用,请执行

#! /bin/bash
REV=$1
MESSAGE=$2
FILTER="test $(echo '$GIT_COMMIT') = $(git rev-parse $REV) && echo $MESSAGE || cat"
git filter-branch --msg-filter "$FILTER" -- --all

警告:这将重写许多提交,因此适用于rebase的相同问题也适用于此处,即您需要在推送时强行执行,其他用户必须知道关于这个。

Git将您的原始引用(来自过滤器分支之前)放在git reword-commit <commit> 'new message' 中。您可以使用以下别名撤消/确认任何filter-branch命令。

.git/refs/original