首页 文章 git仓库删除所有提交历史记录,成为一个干净的新仓库

git仓库删除所有提交历史记录,成为一个干净的新仓库

发布时间:2019-11-20 10:57:47 作者:Soul-Yang 阅读量:724

重置所有提交记录

1.在需要替换的分支(master)下,创建orphan分支,命名为 new

git checkout --orphan new 

注:

如果不提交东西,这个分支实际上没有创建


2.提交

$ git add .
$ git commit -m "init"

3.删除原来需要替换的分支(master)

$ git branch -d master   

4. 将新分支改名为原需替换的分支名(master)

$ git branch -m new master 

5. 将新分支强制覆盖远程的同名分支(master)

$ git push --set-upstream origin master -f

到此已替换结束;多个分支,就重复以上 5 步。

其他协作者需要做的是

1. 切换到刚才替换的分支,执行拉取代码

$ git checkout master
$ git pull

注:

pull  过程相当于新拉取一个新项目,有点耗时。

2.至当前分支执行 (重置提交信息,与远程分支一致)

$ git reset --hard origin/master 

注:这一步将不会再跟踪本地 .git 目录中的原日志信息 ,并跟远程保持同步跟踪记录(没有这一步的的话,本地 push 时,将把历史跟踪记录再次提交!危险!)。

注:这个操作历史跟踪日志并没有被删除,只是不再与现分支产生联系(.git文件夹并不会减小),要彻底删除他们请看下面内容。


清理 Git 缓存

如果执行了上面的方法,发现仓库的提交还是没有减小,那么你可能需要执行下面的方法。【以上方法完成之后.git 文件夹中将依然会保留之前提交信息(已无法跟踪,现把它们删除掉)。】

rm -rf .git/refs/original/
git reflog expire --expire=now --all
git fsck --full --unreachable
git repack -A -d
git gc --aggressive --prune=now
git push --force origin master


注:

0.以上命令在任何一分支下执行,所有分支下.git 文件夹 都见效 (因为本来就一份 .git  ! )

1.最后一条有歧义,可不用执行;

2.本地仓库大小立竿见影(小了好多);

3.最有一条,强制推送到远程,远程仓库依然没法减少,甚至是在原来基础上+ 本地减小后的 .git 文件夹大小(或许远程仓库的意义就在此吧,记录所有变化,绝不接受清除!!个人看法,或许不对!勿喷!);

4.在此基础上,重新克隆下来的代码,.git文件夹大小未做测试,或许也变为最小了吧。

5.原协作者本地.git库 大小不会变,需要自行执行清理缓存一系列命令。













  
留言
https://blog.key9.cn/
用户登录
您还没有写任何评论内容!
您已经评论过了!
只能赞一次哦!
您已经收藏啦!