更改电子邮件git提交?
这个问题在这里已经有了答案:
git filter-branch
应该能够为你做到这一点; 本质上它用相同的SHA1重写了分支的整个提交历史记录。
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
分支。