0
点赞
收藏
分享

微信扫一扫

【GIT】git gc 真的清理掉了垃圾对象吗?

ixiaoyang8 2022-04-03 阅读 76

了解Java的同学应该听过GC这个词 ➡ garbage clean,没错清理垃圾对象~

首先我们先确定下在git中,垃圾对象是怎么产生的?

主要有两个途径:

  1. 由于多余的add

  2. 已删除的分支

下面用一个测试来瞅下git gc真的是把git中产生的垃圾对象删除掉了吗---·?

(嘿嘿》〉着急看结论的同学可以直接滑到文末~)

1. 新建一个名为aqin-branch(名字自己随意~)的分支.

git checkout -b aqin-branch

2. 新建一个文本文件aqin.txt

echo "da">aqin.txt

3. 将文件添加进索引区

git add aqin.txt

4. 对文档进行修改,再次添加索引区

echo "heheheda">aqin.txt
git add aqin.txt

5. 提交到本地仓库

git commit -m "test"

​6. 删除新建分支(测试删除分支不会删掉只在该分支的commit过的对象)

【注意】直接删除会报错哦···

  • 报错原因:⚠️git无法删除当前正处于的分支,如删除当前分支则需要先换到别的分支上(如master,打个比方就像你不能拆掉你现在站的那层楼梯,只能先下一层或者上一层,再去拆掉刚刚想拆的那一层)

7. 新建一个分支test,然后切换到新分支后再次删除分支aqin-branch

​而此时,objects文件夹下的内容并未发生变化

故删除分支不会删掉只在该分支的commit过的对象

8. git gc 出场~

下面看下使用git gc的效果 ➡

9. ​再次查看objects文件夹

  • 结论:通过git gc无法把垃圾对象真正删除,只是删除掉了引用

-·-·-> 下篇记录如何真正删除垃圾对象哈~

举报

相关推荐

0 条评论