如何更改所有提交的作者

2025-06-04

如何更改所有提交的作者

正如一位智者曾经说过的:

“能力越大,责任越大” ——蜘蛛侠漫画中的本杰明·帕克角色。

在处理 Git 时这应该不陌生,特别是在重写提交历史时。

任何时候,当您--force在寻找如何使用 Git 做某事的答案时,您都应该非常master小心,并在将更改推送到正在与他人合作的任何其他分支之前阅读有关它的所有详细信息。

但这次我有一个特殊需求。我之前一直在做一个业余项目,已经有大约 10 次提交了。当我检查命令执行情况时git log,我很快发现作者的用户名相同,但邮箱地址不同。我的提交信息既来自工作邮箱,也来自个人邮箱。

我认为这不会造成任何实际问题,因为我只是在制作一个原型,但我也注意到,由于我的电子邮件问题,我的个人资料的贡献图表没有显示有关这些提交的任何信息。

这让我想到了最合理的解决方案,说道:

“哦,糟糕!”

随后我在 Google 上搜索如何做到这一点,然后我找到了这个StackOverflow 页面,上面有Tarandeep Singh评论,正好满足了我的需要。

即:

git filter-branch -f --env-filter "GIT_AUTHOR_NAME='yourname'; GIT_AUTHOR_EMAIL='youremail@example.com'; GIT_COMMITTER_NAME='yourname'; GIT_COMMITTER_EMAIL='youremail@example.com';" HEAD;
Enter fullscreen mode Exit fullscreen mode
**注意:确保将占位符更改为您需要的内容。**

经过快速的双重检查后git log,我必须运行:

git push --force origin master
Enter fullscreen mode Exit fullscreen mode

这将确保重写我所有远程master分支提交以显示我的个人电子邮件和用户名。

请记住,使用时应该非常小心git push --force,我这样做是因为我知道我是唯一一个从事该项目的人,但在其他情况下使用此命令可能会导致其他问题。

希望这可以帮助那些遇到这种情况的人:)

选择

感谢Rob在评论中分享这个替代方案!

很棒的建议!如果你不习惯用 重写所有项目历史记录,Git 有个叫做mailmaps 的git-filter-branch功能,可以让你规范化用户名和电子邮件地址。

文章来源:https://dev.to/chrisvasqm/how-to-change-the-author-of-all-your-commits-2j7a
PREV
我的 MacOS/Linux 工具 .NET Core 设置 Docker-ing 你的人生 编辑还是不编辑 Hello World-ing
NEXT
理解服务器端渲染