git 基于提交消息编辑多个提交的作者/提交者

xpcnnkqh  于 2023-09-29  发布在  Git
关注(0)|答案(1)|浏览(108)

我希望编辑作者/提交者的几个提交的消息是前缀与[测试]。
我知道你可以用环境变量编辑作者,但是我不能用提交消息搜索它。

git filter-branch --env-filter '
OLD_EMAIL="[email protected]"
CORRECT_NAME="Useername"
CORRECT_EMAIL="[email protected]"
if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
then
    export GIT_COMMITTER_NAME="$CORRECT_NAME"
    export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
then
    export GIT_AUTHOR_NAME="$CORRECT_NAME"
    export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags

我们应该能够像这样集成一个正则表达式“[TEST]*":

if commit message = "[TEST]*" then 
    export GIT_COMMITTER_NAME="$CORRECT_NAME"
    export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
    export GIT_AUTHOR_NAME="$CORRECT_NAME"
    export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
lf5gs5x2

lf5gs5x21#

使用third-party git-filter-repo(1):

git filter-repo --commit-callback='
if commit.message.startswith(b"[TEST]") and commit.author_email == b"[email protected]":
    commit.committer_name = b"Username"
    commit.committer_email = b"[email protected]"
    commit.author_name = b"Username"
    commit.author_email = b"[email protected]"
'

这个Python回调(参见manual)允许您就地更改提交。
您还需要传递--force才能进行更改,因为这是一个破坏性的更新,通常无法撤消。

git-filter-分支(1)

git-filter-分支(1)实际上已经被弃用了,我见过的人中没有人推荐使用它。

相关问题