几天前,我读到一篇关于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之后,我看到新旧邮件 最佳答案
As commented,不能真正“更改”提交,只能创建新的提交
有相同或相似的数据。所以当你做一个git filter-branch
,git rebase
或任何其他形式的修改,您仍在创建
新的承诺。
当运行git push -f
时,唯一的区别是
分支引用是强制更新的;它仍然发送新的提交以及
对远程存储库的旧提交(如果有的话)进行处理。
对于github,它不会立即删除那些旧的提交
从存储库中执行强制推送。
来自官方:
警告:一旦将提交推送到github,就应该考虑
它包含的数据将被泄露。如果您提交了密码,请更改它!
如果提交了密钥,请生成一个新密钥。
本文将告诉您如何使带有敏感数据的提交无法访问
来自github存储库中的任何分支或标记。不过,这很重要
注意,这些提交可能仍然可以在
您的存储库,直接通过github上缓存视图中的sha-1散列,
通过任何引用它们的请求。你什么都做不了
关于存储库中现有的克隆或叉,但可以永久保存。
删除存储库的所有缓存视图并通过
正在联系GitHub支持。
因此,要使旧的提交以合理的方式停止出现在api中
时间范围,唯一的选项是:
警告:虽然前一个选项速度更快,但它也将删除
维基,问题和评论。
GitHub Help并创建一个新的
Delete the repository在托管存储库上手动运行
注:对
悬空承诺:
Contact GitHub support