[git学习日志 转载]删除大文件&修改某一次commit的用户名 邮箱

彻底删除所有历史记录中的大文件

原因
当git仓库中添加&删除了大文件后, 历史记录仍然有该文件, 并且影响到clone和pull的速度.

操作步骤
1.查找前5个大的文件

git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -5 | awk '{print$1}')"

2.删除文件或目录的历史记录

git filter-branch --force --index-filter 'git rm -rf --cached --ignore-unmatch 文件或目录' --prune-empty --tag-name-filter cat -- --all

3.以下命令删除文件引用并强制推送到远程仓库

rm -rf .git/refs/original/
git reflog expire --expire=now --all
git gc --prune=now
git gc --aggressive --prune=now
git push origin --tags --force
git push origin --all --force

注意事项
请确保本地是最新的代码

如果有多个分支, 请确保本地都创建了分支, 并且所有分支都是最新的代码!!!

请确保被删除的文件不需要回滚, 不再被需要

修改某次commit的用户名邮箱

先声明:该操作会改变历史记录,所以需要谨慎执行,尤其是在团队协作的环境下

首先,打开终端或命令行,并且切换到目标Git仓库目录下

1.定位要修改的commit:找到需要修改的记录的commit ID。

2.使用交互式rebase:如果你要修改的commit不是最近的一次,可以使用以下命令,其中commit_id是你要修改的commit的ID的前一个commit的ID

git rebase -i commit_id

如果需要修改的是最近的commit,则可以使用:

git rebase -i HEAD~n

其中n是你需要回退的commit数量

3.选择要修改的commit:在打开的编辑器中,将需要修改的某commit前面的pick改为edit,然后保存并退出编辑器

4.修改用户名和邮箱:现在你可以使用以下命令修改用户名和邮箱:

git commit --amend --author="新用户名 <新邮箱地址>"

5.执行上述命令后会进入一个编辑文档,若需修改commit信息就敲I键进入编辑模式,在最上方看到上次的commit内容修改成新的(下方一堆“#”内容不用管),然后分别ESC,:,wq键保存退出,若不修改直接编辑保存退出即可

6.完成rebase:使用以下命令完成rebase过程:

git rebase --continue

如果有更多的commit需要修改,重复步骤4,5和6

7.强制推送到远程仓库:修改完成之后,你需要强制推送到远程仓库。这个操作会覆盖远程仓库的历史,所以需确保这是你想要的结果

git push --force

请记住,在强制推送之前,你应该提醒你的团队成员,因为这将重写远程仓库的历史。所有的团队成员都将需要根据新的历史进行操作,可能包括使用git pull --rebase来同步本地仓库
8.如果有多个分支 需要切换每个分支 然后提交上去

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值