Git索引究竟包含什么,以及我可以使用什么命令来查看索引的内容?
更新
谢谢你的所有答案.我知道索引充当临时区域,提交的内容是索引而不是工作树.我只是对索引对象的内容感到好奇.我想它可能是文件名/目录名列表,SHA-1对,也许是一种虚拟树?
在Git术语中,是否有任何可用于列出索引内容的管道命令?
我在一台位于NFS上的Linux机器上有一个10 GB的仓库.第一次git status
需要36分钟,之后git status
需要8分钟.似乎Git依赖于操作系统来缓存文件.只有第一个git
命令commit
,status
包括打包/重新包装整个回购需要很长时间才能获得巨大的回购.我不确定你是否曾经使用git status
过这么大的回购,但有没有人遇到过这个问题?
我已经试过git gc
,git clean
,git repack
但所花费的时间仍是/几乎是相同的.
子模块或任何其他概念,比如将repo打成较小的那些有帮助吗?如果是这样,那么最好分割更大的回购.有没有其他方法可以改善大型仓库上git命令的时间?
我有一个相对较大的git存储库的情况,位于我的本地网络上的老人,慢主机上,这需要很长时间才能进行初始克隆.
ravn@bamboo:~/git$ git clone gitosis@gitbox:git00
Initialized empty Git repository in /home/ravn/git/git00/.git/
remote: Counting objects: 89973, done.
remote: Compressing objects: 100% (26745/26745), done.
remote: Total 89973 (delta 50970), reused 85013 (delta 47798)
Receiving objects: 100% (89973/89973), 349.86 MiB | 2.25 MiB/s, done.
Resolving deltas: 100% (50970/50970), done.
Checking out files: 100% (11722/11722), done.
ravn@bamboo:~/git$
Run Code Online (Sandbox Code Playgroud)
gitosis中没有git特定的配置变化.
有没有办法加快接收位到网络的能力?
编辑:我需要新的存储库与上游存储库正确连接.根据我的理解,这需要git来进行克隆,因此git之外的原始位复制将不起作用.
在SO和其他地方以各种形式提出了这个问题,但是我找不到能使我满意的答案,因为没有人列出有问题/没有问题的动作/命令,也没有对速度下降的技术原因进行透彻的解释。 。
例如:
因此,我不得不再次问:
和,
我现在不在乎如何解决这个问题。我只关心哪个动作的性能受到影响,以及根据当前git架构的推理。
编辑以澄清:
很明显,git clone
例如,将是回购规模的o(n)。
但是我不清楚这是git pull
一样的,因为从理论上讲只看差异是可能的。
Git在幕后做了一些非常琐碎的事情,我不确定何时何地。
编辑2:
我发现这篇文章,说
如果您的存储库中有大型不可分散的文件(例如二进制文件),则每次对文件进行更改时,都将在该存储库中保留该文件的完整副本。如果您的存储库中存在这些文件的许多版本,则它们将大大增加签出,分支, 获取和克隆代码的时间。
我不明白为什么分支需要花费超过O(1)的时间,而且我也不确定列表是否已满。(例如,拉动怎么样?)