我有一个问题和这个问题描述中的问题 How do I change the author of a commit in git? 类似,我正在尝试使用 git filter-branch
解决,但是它不起作用,因为它无法匹配带空格的字符串字面量,即我需要使用 contains
:
git filter-branch --commit-filter '
if [ "$GIT_AUTHOR_NAME" = "giovanni azua" ];
then
GIT_COMMITTER_NAME="Giovanni Azua";
GIT_COMMITTER_EMAIL="giovanni.azua@xxx.com";
GIT_AUTHOR_NAME="Giovanni Azua";
GIT_AUTHOR_EMAIL="giovanni.azua@xxx.com";
git commit-tree "$@";
else
git commit-tree "$@";
fi' HEAD
等号两边如果有空格,等号就不能正确工作。我不知道如何进行转义。我也尝试过像
giovanni\ azua
这样进行转义,但不起作用。我也找不到任何关于脚本的参考,如何执行字符串contains
或substring
匹配?我总是得到输出WARNING: Ref 'refs/heads/master' is unchanged
。更新:如果[“$GIT_AUTHOR_NAME”~=”giovanni azua”]也能检查我的内容,但运算符~=不起作用。
pgiovanni azuaq
,它也应该匹配?(可能不是,但这意味着您需要考虑确切的匹配内容。)测试if [ ... ]
只是运行[
程序(请参见test文档)。使用expr
或grep
来运行正则表达式匹配。 - torek