相关疑难解决方法(0)

git如何存储文件?

我刚开始学习git并且这样做我开始阅读Git社区书,在本书中他们说SVN和CVS存储文件之间的差异,而git存储所有文件的快照.

但我并没有真正了解快照的含义.git是否真的复制了每个提交中的所有文件,因为这是我从他们的解释中理解的.

PS:如果有任何人有更好的学习git的来源我会很感激.

git

204
推荐指数
3
解决办法
7万
查看次数

Git在哪里存储文件?

我刚刚在Ruby on Rails项目上运行了以下命令:

git init
git add .
git commit -a -m 'Initial'
Run Code Online (Sandbox Code Playgroud)

Git在哪里实际存储此存储库?(它在我的本地机器上,但在哪里?)

git

68
推荐指数
4
解决办法
14万
查看次数

git二进制差异算法(增量存储)是否标准化?

Git使用增量压缩来存储彼此相似的对象.

此算法是否已标准化并在其他工具中使用?是否有描述格式的文档?它与xdelta/VCDIFF/RFC 3284兼容吗?

compression git binary-diff vcdiff

50
推荐指数
3
解决办法
2万
查看次数

什么是git的瘦身包?

我没有在薄包装上找到太多东西,而且手册页的信息对此非常神秘.我知道它与慢速连接有关,但什么是"慢速连接"?

它的优点和缺点是什么?我什么时候应该使用它,什么时候不应该使用它?

git

19
推荐指数
1
解决办法
7009
查看次数

git何时以及如何使用增量进行存储?

阅读git的文档他们强调的一件事是git存储快照而不是增量.自从我看到Git的课程说Git存储了文件版本之间的差异后,我尝试了以下内容:我在一个空文件夹上初始化了一个git存储库,创建了一个lorem.txt包含一些lorem ipsum文本的文件,该文件暂存并提交.

然后find .git/objects -type f在命令行上使用我列出了在对象文件夹上保存的git,并且按照预期找到了一个提交对象,该对象指向指向包含我保存的lorem ispum文本的blob对象的树对象.

然后我修改了lorem ipsum文本,添加了更多内容,暂存了这个更改并提交了.再次列出文件,我现在可以看到新的提交对象,指向一个新的三个对象和一个新的blob对象.使用git cat-file -p 331cf0780688c73be429fa602f9dd99f18b36793我可以看到新blob的内容.它们正是完整lorem.txt文件的内容,旧内容加上更改.

这符合文档的预期:git存储快照,而不是增量.但是,在互联网上搜索我发现了这个问题.在接受的答案中,我们看到以下内容:

虽然这在概念层面上是真实而重要的,但在存储层面却并非如此.

Git确实使用增量来存储.

不仅如此,它比其他任何系统都更有效率.因为它不保留每个文件的历史记录,所以当它想要进行增量压缩时,需要每个blob,选择一些可能相似的blob(使用包含最接近的先前版本和其他一些版本的试探法),尝试生成增量并选择最小的增量.通过这种方式,它可以(通常取决于启发式方法)利用其他类似文件或比以前更相似的旧版本."pack window"参数允许delta压缩质量的交易性能.默认值(10)通常会得到不错的结果,但是当空间有限或加速网络传输时,git gc --aggressive使用值250,这使得它运行速度非常慢,但为历史数据提供了额外的压缩.

这说Git确实使用增量进行存储.据我所知,Git不会一直使用增量,但只有在检测到它时才有必要.这是真的?

我在文件上放了很多lorem文本,所以它的大小是2mb.我认为当对一个大文本文件做一个小改动时,Git会自动使用增量,但正如我所说的那样.

当Git使用deltas以及它是如何工作的?

git

13
推荐指数
2
解决办法
1779
查看次数

将(大型)二进制文件保存在Git存储库中是否会影响除克隆之外的操作的性能?

我已经阅读了有关在Git存储库中存储二进制文件的现有问题,但有些方面仍然不清楚.

存储库包含大约50 MB的代码源和大约1 GB的二进制文件.二进制文件很少更改.

  1. 通常的日常工作流程的性能是否受到二进制文件的负面影响?像提交更改,移动,移动和更改文件等操作; 合并; 拉动和推动.有问题的操作不涉及所述二进制文件.
  2. 从性能的角度来看(例如RAM,CPU,HDD访问)是否有从选择分支中删除这些文件的任何优点?而不是从存储库及其历史记录中完全删除文件.

git

13
推荐指数
2
解决办法
493
查看次数

关于Git的合并与变革

在此输入图像描述

在此输入图像描述

在此输入图像描述

以上是合并和rebase的结果.

我的问题是,在最终状态下,C5C3'是否相同?

或者说,git rebase等于git merge+删除C3

git

10
推荐指数
1
解决办法
1424
查看次数

Git内部:Git如何存储修订版之间的小差异?

据我了解,一些VCS存储修订版之间的差异,因为,差异有时很小 - 源代码中的一行被更改或者后续修订中添加了注释.另一方面,Git为每个修订版存储压缩的"快照".

如果只做了很小的改动(大文本文件中的一行),Git如何处理这个?它是否存储了两个几乎完全相同的副本?我想,这将是对空间的低效利用.

git

8
推荐指数
3
解决办法
2738
查看次数

git 如何处理压缩文件?

我有一些svg文件希望通过git. 但是,大多数软件都可以透明处理svgz(基本上是svg.gz)。因此,我正在考虑切换到svgz以节省磁盘空间。

将它们作为svgz而不是svg从一个git角度来看有什么优点和缺点?

我天真的想法是git 差异算法针对文本文件进行了优化,并且在它们的压缩副本上效果不佳。由于差异也被压缩,我认为整体方法对于文本文件非常有效,其中差异占用的磁盘空间非常少。相反,对于压缩数据,它倾向于在内部保存更大的文件,最终我预计存储库最终可能会为压缩文件占用更多空间。

git compressed-files

3
推荐指数
1
解决办法
787
查看次数

进行git合并时,主要分支是什么?

鉴于我目前的分支是分支A.

分支A包含:

line 1 -- "i love you Foo"
Run Code Online (Sandbox Code Playgroud)

分支B包含:

line 1 -- "i love you Bar"
Run Code Online (Sandbox Code Playgroud)

如果我这样做:

git merge Branch B 
Run Code Online (Sandbox Code Playgroud)

我会得到什么?

git

2
推荐指数
2
解决办法
1360
查看次数

需要技术堆栈才能理解Git源代码

我有兴趣了解Git源代码,也许有一天会对它做出贡献.

我理解Git源代码是基于:

  1. 语言,如C,Shell,Perl,Python,C++,TCL

2)HTTP,HTTPS,SSH等技术

我只是想知道,还有什么是理解Git源代码的先决条件吗?

git

-4
推荐指数
1
解决办法
146
查看次数

标签 统计

git ×11

binary-diff ×1

compressed-files ×1

compression ×1

vcdiff ×1