根据提交消息编辑多个提交的作者/提交者

问题描述 投票:0回答:1

我正在寻找编辑多个提交的作者/提交者,其消息以 [TEST] 为前缀。

我知道你可以使用环境变量编辑作者,但我无法通过提交消息搜索找到它。

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"
git git-commit git-filter-branch git-filter-repo
1个回答
0
投票
git filter-repo --commit-callback='
if commit.message.startswith(b"[TEST]") and commit.author_email == b"[email protected]":
    commit.author_email = b"[email protected]"
if commit.message.startswith(b"[TEST]") and commit.committer_email == b"[email protected]":
    commit.committer_email = b"[email protected]"
'

此 Python 回调(请参阅手册)可让您就地更改提交。

您还需要通过

--force
才能进行更改,因为 这是一个破坏性的更新,(通常)无法撤消。

git 过滤器分支(1)

git-filter-branch(1) 实际上已被弃用,而且我还没见过 已推荐其用法。

© www.soinside.com 2019 - 2024. All rights reserved.