已经 push 到远程仓库的提交,如何修改某个用户的所有提交的邮箱啊 - V2EX
lixyz
·
2025-10-31
·
via git
这是一个创建于 226 天前的主题,其中的信息可能已经有所发展或是发生改变。
新换了老板,查看报表时候,发现我以往的 commit 邮箱不是公司邮箱
我也比较纳闷。。。我记得我还专门设置过,排查下来,可能是 git 工具把我登录的账号默认的 git 配置给覆盖了
现在问题来了,该如何把已经 push 到远程仓库的所有有关我的 commit 的邮箱全部修改啊
求教大佬
 |
|
1
maichael 2025 年 10 月 31 日 1
git-filter-repo 之类的工具,具体用法你问 AI 就好,不过肯定是要 force push 的,谨慎操作。
|
 |
|
2
dif 2025 年 10 月 31 日
git filter-branch 试试 小声 bb ,不都看你需求单和缺陷工单么?怎么会看提交呢- - 我这修改一个小功能提交一次,那不得预定优秀员工?
|
 |
|
3
lixyz 2025 年 10 月 31 日
@maichael force push 是肯定的,已经有心理预期了,很苦恼 @dif 可说呢。。。报表统计代码行数。。。 我试一下二位说的,先拿个测试仓库测试一下子,多谢多谢
|
 |
|
4
victimsss 2025 年 10 月 31 日
commit hash 包括提交者信息和时间吧 你用工具修改了邮箱 之前的 commit hash 也会重写 对整个仓库的提交者都有影响
|
 |
|
5
skiy 2025 年 10 月 31 日
# 修改 author 信息 git filter-repo --commit-callback ' if commit.author_email == b"[email protected]": commit.author_name = b"New Name" commit.author_email = b"[email protected]" ' --force # 修改 committer 信息 git filter-repo --commit-callback ' if commit.committer_email == b"[email protected]": commit.committer_name= b"New Name" commit.committer_email = b"[email protected]" ' --force # 修改全部 git filter-repo --force --commit-callback ' if commit.committer_email == b"[email protected]": commit.author_name = b"New Name" commit.author_email = b"[email protected]" commit.committer_name = b"New Name" commit.committer_email = b"[email protected]" ' git filter-repo --force --commit-callback ' if commit.committer_email != b"[email protected]": commit.author_name = b"New Name" commit.author_email = b"[email protected]" commit.committer_name = b"New Name" commit.committer_email = b"[email protected]" ' git filter-repo --force --commit-callback ' commit.author_name = b"New Name" commit.author_email = b"[email protected]" commit.committer_name = b"New Name" commit.committer_email = b"[email protected]" ' filter-repo 这个工具,能保持历史时间不变。还有一种是不用任何扩展也能改,但那个时间会切换成当前时间。
|
 |
|
6
icyalala 2025 年 10 月 31 日
如果只是为了统计代码行数,那分邮箱统计出来后,再按单用户多邮箱合并一下不就行了 为什么要去改 git 历史呢。。。
|
 |
|
7
lixyz 2025 年 10 月 31 日
@icyalala 可能是公司的统计工具,只支持公司内部邮箱吧,反正现在领导反馈能改的话最好改一下。。。无奈。。。
|
 |
|
9
awsl2333 2025 年 10 月 31 日
只能 rebase + push -f 了
|
 |
|
10
svon 2025 年 10 月 31 日
git filter-branch -f --env-filter ' OLD_EMAIL="旧邮箱地址" CORRECT_NAME="新名称" CORRECT_EMAIL="新邮箱" 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
|
 |
|
11
wenrouxiaozhu 2025 年 10 月 31 日
还有注意`GIT_COMMIT_DATE`和`GIT_AUTHOR_DATE`
|
 |
|
12
wweir 2025 年 10 月 31 日
前段时间,我一句话让 claude code 给我改了 
|
 |
|
15
zzhaolei 2025 年 11 月 2 日
那都合并到 main 了,也要让你 force push ?不怕出问题吗? 公司没明确说的,我都是用自己的邮箱,懒得改
|
 |
|
16
smallparking 2025 年 11 月 3 日 via Android
我的建议是别改 影响太大,利益太小
|
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。