几天前我读了一篇有关Github隐私基础的文章,上面说通过简单的Github API请求可以看到提交者的电子邮件。
我设置了电子邮件别名,但我想更改过去提交的电子邮件。尝试使用此网站和.gitconfig文件中的别名。
change-commits = "!f() { VAR1=$1; VAR='$'$1; OLD=$2; NEW=$3;
echo \"Are you sure for replace $VAR $OLD => $NEW ?(Y/N)\";
read OK;
if [ \"$OK\" = 'Y' ] ;
then shift 3;
git filter-branch --env-filter \"if [ \\\"${VAR}\\\" = '$OLD' ];
then export $VAR1='$NEW';echo 'to $NEW'; fi\" $@; fi;};f "
执行完上述步骤后,当我输入git log
时,每个提交记录都有新的电子邮件地址。但在调用https://api.github.com/users/(usuername)/events/public API之后,我会看到旧的和新的电子邮件地址。
git filter-branch
也不会尝试去修改它们。git filter-branch
的作用是将旧的提交记录复制到新的提交记录中,并在创建新的提交记录之前执行你请求的更改。旧的提交记录将继续以其旧内容存在,直到没有任何引用它们的地方;此后,Git 最终会移除旧的提交记录,但你无法控制这个过程发生的时间,因为仓库在 GitHub 上。 - torek