Git,重写以前的提交用户名和电子邮件

标签 git

我已经向 Github 上的一个项目提交了一堆提交,但是我意识到我没有在我当前用于提交的计算机上设置正确的电子邮件和提交者全名,因此没有设置用户头像和电子邮件地址不存在。

如何重写所有过去的提交电子邮件和用户名?

最佳答案

您可以添加这个别名:

git config --global alias.change-commits '!'"f() { VAR=\$1; OLD=\$2; NEW=\$3; shift 3; git filter-branch --env-filter \"if [[ \\\"\$\`echo \$VAR\`\\\" = '\$OLD' ]]; then export \$VAR='\$NEW'; fi\" \$@; }; f"

更改作者姓名:

git change-commits GIT_AUTHOR_NAME "old name" "new name"

或仅包含最后 10 次提交的电子邮件:

git change-commits GIT_AUTHOR_EMAIL "old@email.com" "new@email.com" HEAD~10..HEAD

别名:

change-commits="!f() { VAR=$1; OLD=$2; NEW=$3; shift 3; git filter-branch --env-filter \"if [[ \\\"$`echo $VAR`\\\" = '$OLD' ]]; then export $VAR='$NEW'; fi\" \$@; }; f"

来源:https://github.com/brauliobo/gitconfig/blob/master/configs/.gitconfig

关于Git,重写以前的提交用户名和电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2919878/

相关文章:

git - 对 .gitignore 的更改未显示在日志中,但显示在提交到提交差异中

git - 如何将一个分支复制到git中的另一个现有分支

git - 我从 .ssh 文件夹中删除了 known_hosts 文件,但无法 pull 入或推送 BitBucket 存储库

git - git clone 后在 Intellij 中标记为非项目文件的所有文件

GIT - 致命的 : Could not resolve host: bitbucket. 组织

jquery - 我应该将 Web 库添加为项目的 git 子模块吗?

git - “git push”和“git exile push”有什么区别?

git - 如何在 Windows 的 Git Bash 终端下发出 EOF 信号以关闭标准输入? Ctrl-D 无效

git - 从 git diff 中找出更改的行号

git - 如何对 git 子模块使用相同的协议(protocol)?