修改git 所有历史记录

本文介绍如何使用Git的filter-branch命令重写所有提交的历史记录,例如修改提交中的邮箱地址。同时提供了一种极端情况下清空所有提交记录的方法,包括删除本地.git文件夹、重新初始化仓库并强制推送。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分割线下面的是我之前的错误处理办法, 这里更新下:

git 支持重写历史, 可能大家常用的是git rebase这个修改近期的commit可能比较方便, 但是当你想修改所有历史时就需要用到filter-branch了

比如修改所有commit中的邮箱地址:

git filter-branch --commit-filter '  

if [ "$GIT_AUTHOR_EMAIL" = "xxxxx@localhost" ];  

then  

GIT_AUTHOR_NAME="new name";  

GIT_AUTHOR_EMAIL="newemail@example.com";  

git commit-tree "$@";  

else  

git commit-tree "$@";  

fi' HEAD

这样就能改变历史所有commit了

---------------------------------------------------------------------------------------------------------------

首先,清空所有记录意味着破坏git的原有commit 记录, 分支等 非极端情况请勿做此操作.

当出现个人维护项目想要清空所有提交从零开始, 或者像我一样从github上clone项目忘了重新git init然后直接推到自己的远程仓库, 结果发现里面全是原作者的commit记录时才不得已作此操作.

具体操作很简单:

1. 删除本地.git文件本地项目文件下 rm -rf .git

2. git init

3. git add . && git commit -"重新推项目""

4. git push -f -u origin master 在此步骤如果你的远程仓库设置了禁止删除分支, 会出现"PUSH REJECTED BY EVIL DRAGON BUREAUCRATS" 并出现火龙图案, 此时你要联系远程仓库管理员修改远程仓库设置了,修改完重复4就OK了.

再次申明这是极端情况下的方案, 正常情况请勿尝试.


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值