更改 Git/GitHub 存储库的作者姓名和电子邮件,为所有提交保留时间戳

Posted

技术标签:

【中文标题】更改 Git/GitHub 存储库的作者姓名和电子邮件,为所有提交保留时间戳【英文标题】:Change author name and email of Git/GitHub repository keeping timestamps for all commits 【发布时间】:2021-04-11 04:01:32 【问题描述】:

我最近在 GitHub 上更改了我的用户名,另外我想在提交时隐藏我的真实电子邮件并保留提交历史。假设我没有任何贡献者,所以所有提交都是我的。找到了一些使用 git filter-branch 的建议,但是运行它时我收到了一个警告,它可能会损坏我的存储库。有其他选择吗?

【问题讨论】:

【参考方案1】:

因此,如果不需要或在任何地方都没有引用原始哈希,并且只需要更新作者姓名/电子邮件,那么只需两个简单的步骤即可。

请注意,它是不可逆的,因此请务必备份。

    为 git 配置设置新名称和电子邮件:
git config --global user.name "FIRST_NAME LAST_NAME"
git config --global user.email "MY_EMAIL@SOME_DOMAIN.com"

跳过--global 以获取特定于存储库的用户名/电子邮件配置。

    在所需的存储库分支上运行此单行代码:
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)"'

编辑器将打开所有提交的列表和将在每次提交时执行的命令。这里不需要做任何事情,只需保存并退出。 之后将应用更改。

所以它的基本作用是从第一次提交开始以交互模式运行 re-base。对于每个提交,它获取原始提交的日期,设置GIT_COMMITTER_DATE(对 GitHub 很重要)和时间戳(将显示在git log 中),重置提交的作者,并修改更改。然后进入下一个提交。就是这样,现在你只需要强制推送更改以更新 GitHub 存储库。

git push -f

同样,首先在存储库的副本上尝试这些步骤!

【讨论】:

以上是关于更改 Git/GitHub 存储库的作者姓名和电子邮件,为所有提交保留时间戳的主要内容,如果未能解决你的问题,请参考以下文章

假定我们要建立一个学术论文数据库,存储如下信息: •学术期刊有期刊编号期刊名发行单位; •作者有作者编号作者姓名电子邮件; •论文有论文编号论文标题摘要正文; •每篇论文只被一个

更改 Git 存储库目录位置。

php 更改来自电子邮件和电子邮件中的姓名发送请求报价,以及客户的电子邮件和姓名。

如何监视远程只读颠覆存储库的提交更改?

为多个 Git (GitHub) 存储库重用一个 Jenkins 作业

删除远程 git 存储库中的合并和提交