土豆不好吃

如何更改git commit user?

乔治·奥威尔有言

历史不是一面镜子,而是黑板上的记号,可以随时擦去,随时填补。更为可怕的是,一旦涂改了,你找不到证据去证明这是篡改历史的行为。

Git会追踪每一次commit的历史记录,如果之前不小心配置错了用户名,那么有办法改掉吗?

当然了办法是有的,改掉commit username和email是很容易的,不就是这么几行嘛?

git rebase -i f25f719f7c2333d310696c3ed41e5a90ed078e55

弹出的交互式窗口,把要改的commit从pick改成edit

然后不停地

git commit --amend --author="Cool <cool@gmail.com>" --no-edit && git rebase --continue

就可以了

事实果真如此吗?git push -fv试试看?



妈勒个巴子,时间不对啊,明明是Feb的怎么就变成了现在的时间了。这不就露馅了吗!

千辛万苦找到一个名字叫git-filter-repo的东西,试了一下是可以的。

先安装,比如说 apt install git-filter-repo

然后创建一个mailmap文件,格式如下

New <new@gmail.com> BennyThink <benny.think@gmail.com>

如有需要可以写多行

然后

git filter-repo --mailmap /etc/mailmap

然后再push,如果遇到缺失remote的问题,重新添加一下

git remote add origin https://github.com/tgbot-collection/history
git push --set-upstream origin master -fv

优秀吧!全变成对应的名字和邮箱了,并且commit的时间也没有改变。git log和GitHub是一致的。

如果想要只改几个commit的邮箱,那怎么办呢?

比如说只想改前两个

git filter-repo --refs master~2..master --mailmap /etc/mailmap

如果想改某个中间的一些commit的邮箱为某个人、并且还不改变GitHub上显示的时间呢?甚至不敢确定这种是否可行😂

emmm这个我还不太知道,其实不太知道refs是什么意思,尝试了很久也不行

看到git-filter-repo里写着

git filter-repo ... --refs C..H
git filter-repo ... --refs C..H ^D
git filter-repo ... --refs D..H ^C

H应该指的是HEAD?

总之,暂时够用了😂


文章版权归原作者所有丨本站默认采用CC-BY-NC-SA 4.0协议进行授权|
转载必须包含本声明,并以超链接形式注明原作者和本文原始地址:
https://dmesg.app/change-git-user.html
退出移动版