在 git 次提交时更改电子邮件?
Change email on git commits?
我以前主要使用电子邮件 A,但现在主要使用电子邮件 B,并且根本不使用 A。我将我的 github 主电子邮件更改为 B,但忘记在本地更新我的 .gitconfig
,所以我所有提交的所有 patch
仍然说它们是由电子邮件 A 的用户创建的。
因此,我的 none 次提交记录在 github 我的 "Contributions" 下。
官方github对此的回应是将电子邮件A添加到我的github帐户,我的贡献将自动重建。
但是,我想尽可能地从每个平台上删除电子邮件 A - 有没有办法更改我对电子邮件 B 所做的每个提交的 "commiter"?
git filter-branch
应该可以为您做到这一点;本质上,它使用相同的 SHA1 重写了分支的整个提交历史。
有一个 example script on Github 演示了如何执行此操作;它很短,所以我在这里复制它。
#!/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
有必要强制推送已过滤的分支,因为您已经更改了它的历史记录。如果有人在共享您的分支,这将使他们的历史记录与您的不匹配——您需要让所有协作者重新拉取已编辑的分支。如果他们一直在旧分支上工作并已提交,他们可以将它们挑选到新分支上。
您可能希望创建一个全新的分支并在那里更新历史记录,然后让每个人都可以拉取它,从而使这更容易。到那时你们都可以同意这是新的 master 分支并在此基础上工作,或者只是让每个人删除他们的旧 master 副本并将新分支重命名为 master
.
我以前主要使用电子邮件 A,但现在主要使用电子邮件 B,并且根本不使用 A。我将我的 github 主电子邮件更改为 B,但忘记在本地更新我的 .gitconfig
,所以我所有提交的所有 patch
仍然说它们是由电子邮件 A 的用户创建的。
因此,我的 none 次提交记录在 github 我的 "Contributions" 下。
官方github对此的回应是将电子邮件A添加到我的github帐户,我的贡献将自动重建。
但是,我想尽可能地从每个平台上删除电子邮件 A - 有没有办法更改我对电子邮件 B 所做的每个提交的 "commiter"?
git filter-branch
应该可以为您做到这一点;本质上,它使用相同的 SHA1 重写了分支的整个提交历史。
有一个 example script on Github 演示了如何执行此操作;它很短,所以我在这里复制它。
#!/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
有必要强制推送已过滤的分支,因为您已经更改了它的历史记录。如果有人在共享您的分支,这将使他们的历史记录与您的不匹配——您需要让所有协作者重新拉取已编辑的分支。如果他们一直在旧分支上工作并已提交,他们可以将它们挑选到新分支上。
您可能希望创建一个全新的分支并在那里更新历史记录,然后让每个人都可以拉取它,从而使这更容易。到那时你们都可以同意这是新的 master 分支并在此基础上工作,或者只是让每个人删除他们的旧 master 副本并将新分支重命名为 master
.