您尚未登录。

#1 2015-07-16 09:47:48

Mr.Chen
会员
注册时间: 2014-11-11
帖子: 21

git的一些问题

git 使用 git add 暂存了一个 未追踪 的文件后,会在git的对象库中存储该blob,
此步骤可一通过 git hash-object [filename] ; find .git/object ;和git add [filename]进行验证,
我已经验证过了,
然后我做的是git reset HEAD 将索引重置到以前的状态,这个文件的blob依然在对象库中,
然后我删除了该文件,因为该文件重新变为 未追踪 文件,所以直接rm 掉就是该版本库为察觉到任何变化
但是那个文件的blob还在对象库中,没有其他情况的话,应该没有任何东西会引用它,这不就成为一个垃圾了吗?

我知道git的设计思想就是disk is cheap。
我只是不想有完全没用的垃圾存在。
是我理解错了吗?
还是说git会有一种清理这种垃圾的机制?

离线

#2 2015-07-16 11:56:24

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,917
个人网站

Re: git的一些问题

垃圾当然是先让它在那里,积累多了一次性倒掉啦。看看 git gc 相关命令的文档吧 :-)

PS: git 从来没觉得 disk is cheap 吧。不然它怎么还压缩、打包什么的。只是它觉得效率更重要,所以允许相当数量的松散文件存在。

在线

#3 2015-07-16 12:10:57

Mr.Chen
会员
注册时间: 2014-11-11
帖子: 21

Re: git的一些问题

好吧,谢谢依云大神,我学习git才刚刚开始,想到这个就来问一问,
我对git压缩和打包的理解是:传输上效率的提升。
我觉得从每个人都拥有一份完整的仓库这一点来看就体现了git认为磁盘空间是很廉价的吧。
但是这样的确解决很多其他vcs的问题。
我再去看看 gc的文档哈,,再次感谢

百合仙子 说:

垃圾当然是先让它在那里,积累多了一次性倒掉啦。看看 git gc 相关命令的文档吧 :-)

PS: git 从来没觉得 disk is cheap 吧。不然它怎么还压缩、打包什么的。只是它觉得效率更重要,所以允许相当数量的松散文件存在。

离线

#4 2015-07-16 13:08:27

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,917
个人网站

Re: git的一些问题

你知道吗,对于许多仓库,git 所占用的空间比 svn 要小,虽然 git 保存了完整的历史而 svn 只有当前版本。

每个人都是完整的仓库是分布式的前提。

在线

#5 2015-07-16 15:34:36

Mr.Chen
会员
注册时间: 2014-11-11
帖子: 21

Re: git的一些问题

我没有使用过svn,git是我接触版本控制以后学习的第一个cvs...
我也了解git这样做带来的好处。

百合仙子 说:

你知道吗,对于许多仓库,git 所占用的空间比 svn 要小,虽然 git 保存了完整的历史而 svn 只有当前版本。

每个人都是完整的仓库是分布式的前提。

离线

#6 2015-07-16 22:05:20

atmouse
会员
注册时间: 2011-08-24
帖子: 701

Re: git的一些问题

你用git for windows 的gui的时候, 打开一个库,经常就是提示你,压缩清理。做完之后就清爽了

最近编辑记录 atmouse (2015-07-16 22:09:06)

离线

#7 2015-07-19 11:20:26

Mr.Chen
会员
注册时间: 2014-11-11
帖子: 21

Re: git的一些问题

好吧,现在没用windows了,一直是linux环境,
依云大哥说的git gc 就是清理这种垃圾的命令。

atmouse 说:

你用git for windows 的gui的时候, 打开一个库,经常就是提示你,压缩清理。做完之后就清爽了

离线

页脚