我正在使用此链接中的此脚本来编辑所有提交中的作者信息。
#!/bin/sh
git filter-branch --env-filter '
OLD_EMAIL="your-old-email@example.com"
CORRECT_NAME="Your Correct Name"
CORRECT_EMAIL="your-correct-email@example.com"
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
Run Code Online (Sandbox Code Playgroud)
但是,我收到以下错误(警告?):
Cannot create a new backup.
A previous backup already exists in refs/original/
Force overwriting the backup with -f
Run Code Online (Sandbox Code Playgroud)
我也检查了日志。作者信息没有改变。我在这里做错了什么?
更新:正如@elpiekay所提到的,该-f
标志使脚本工作。
但是谁能解释错误日志本身?为什么提到备份?我以前从未做过任何备份(不确定错误日志中引用了什么备份)
Von*_*onC 14
实际上,更好的做法是:
您现在可以改用它可能的后继:( newren/git-filter-repo
在 Python 中)及其示例部分:
cd repo
git filter-repo --mailmap my-mailmap
Run Code Online (Sandbox Code Playgroud)
与my-mailmap
:
Correct Name <correct@email.com> <old@email.com>
Run Code Online (Sandbox Code Playgroud)
这将替换任何人所做的任何提交的作者姓名和电子邮件 <old@email.com>
有关git mailmap
该映射文件的确切语法,请参阅。