更改 Git/GitHub 存储库的作者姓名和电子邮件,保留所有提交的时间戳
Change author name and email of Git/GitHub repository keeping timestamps for all commits
我最近在 GitHub 上更改了我的用户名,另外我想在提交中隐藏我的真实电子邮件并保留提交历史记录。假设我没有任何贡献者,所以所有提交都是我的。找到了一些使用 git filter-branch
的建议,但是 运行 我收到了一个警告,它可能会损坏我的存储库。还有其他选择吗?
因此,如果不需要或未在任何地方引用原始哈希值,并且只有作者 name/email 需要更新,则有两个简单的步骤可以做到这一点。
Be aware that it's not reversible, so make sure to have a backup.
- 将新名称和电子邮件设置为 git 配置:
git config --global user.name "FIRST_NAME LAST_NAME"
git config --global user.email "MY_EMAIL@SOME_DOMAIN.com"
跳过 --global
存储库特定用户name/email 配置。
- 运行 存储库所需分支上的这一行:
git rebase -i --rebase-merges --root --exec 'GIT_COMMITTER_DATE="$(git log -n 1 --format=%aD)" git commit --amend --reset-author --no-edit --date="$(git log -n 1 --format=%aD)"'
编辑器将打开,其中包含所有提交的列表和将在每次提交时执行的命令。这里什么都不用做,保存退出即可。
之后将应用更改。
所以它基本上做的是 运行 从第一次提交开始以交互模式重新设置基础。对于每个提交,它都会获取原始提交的日期,设置 GIT_COMMITTER_DATE
(对于 GitHub 很重要)和时间戳(将显示在 git log
中),重置提交的作者, 并修改更改。然后转到下一个提交。就是这样,现在您只需要强制推送更改以更新 GitHub 存储库。
git push -f
再次,首先在存储库的副本上尝试这些步骤!
我最近在 GitHub 上更改了我的用户名,另外我想在提交中隐藏我的真实电子邮件并保留提交历史记录。假设我没有任何贡献者,所以所有提交都是我的。找到了一些使用 git filter-branch
的建议,但是 运行 我收到了一个警告,它可能会损坏我的存储库。还有其他选择吗?
因此,如果不需要或未在任何地方引用原始哈希值,并且只有作者 name/email 需要更新,则有两个简单的步骤可以做到这一点。
Be aware that it's not reversible, so make sure to have a backup.
- 将新名称和电子邮件设置为 git 配置:
git config --global user.name "FIRST_NAME LAST_NAME"
git config --global user.email "MY_EMAIL@SOME_DOMAIN.com"
跳过 --global
存储库特定用户name/email 配置。
- 运行 存储库所需分支上的这一行:
git rebase -i --rebase-merges --root --exec 'GIT_COMMITTER_DATE="$(git log -n 1 --format=%aD)" git commit --amend --reset-author --no-edit --date="$(git log -n 1 --format=%aD)"'
编辑器将打开,其中包含所有提交的列表和将在每次提交时执行的命令。这里什么都不用做,保存退出即可。 之后将应用更改。
所以它基本上做的是 运行 从第一次提交开始以交互模式重新设置基础。对于每个提交,它都会获取原始提交的日期,设置 GIT_COMMITTER_DATE
(对于 GitHub 很重要)和时间戳(将显示在 git log
中),重置提交的作者, 并修改更改。然后转到下一个提交。就是这样,现在您只需要强制推送更改以更新 GitHub 存储库。
git push -f