【发布时间】:2019-01-12 04:06:42
【问题描述】:
几天前,我阅读了有关 Github 隐私基础的文章,其中说提交者的电子邮件可以通过简单的 Github API 请求查看。
我设置了电子邮件别名,但我想更改过去提交的电子邮件。尝试使用 this 站点和 .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 并且每个提交都有新邮件的步骤之后,但在 API 调用 https://api.github.com/users/(usuername)/events/public 之后,我会看到旧邮件和新邮件
【问题讨论】:
-
您确实无法更改旧的提交,
git filter-branch不会尝试。git filter-branch所做的是将旧提交复制 到新 提交,并在进行新提交之前执行您请求的更改。旧的提交将继续存在,直到没有人引用它们为止;在那之后,Git 最终会——你无法控制何时发生这种情况,因为存储库在 GitHub 上——删除旧的提交。 -
@torek。您可以随时进行您建议的更改,克隆不应复制旧提交的 repo,删除 GitHub 上的 repo,然后使用您的克隆重新初始化。如果旧的提交确实被复制了,那么在本地清理它们会很容易。