什么';git的含义是什么;文件的快照?
我在看书 Git认为它的数据更像是一组缩影的快照 文件系统 我无法理解git快照的含义。git是否在每个快照/版本中存储整个文件内容?例如 版本1什么';git的含义是什么;文件的快照?,git,svn,version-control,Git,Svn,Version Control,我在看书 Git认为它的数据更像是一组缩影的快照 文件系统 我无法理解git快照的含义。git是否在每个快照/版本中存储整个文件内容?例如 版本1 #include <stdio.h> int main() { printf("hello, world"); return 0; } #包括 int main() { printf(“你好,世界”); 返回0; } 在版本2中,我在文件中添加了一行额外内容 #include <stdio.h&g
#include <stdio.h>
int main()
{
printf("hello, world");
return 0;
}
#包括
int main()
{
printf(“你好,世界”);
返回0;
}
在版本2中,我在文件中添加了一行额外内容
#include <stdio.h>
int main()
{
printf("hello, world");
printf("hello, git");
return 0;
}
#包括
int main()
{
printf(“你好,世界”);
printf(“你好,吉特”);
返回0;
}
git是否会存储整个内容,而不是将这两个版本之间的差异(printf(“hello,git”)
)存储为svn等
如果是,有什么意义
git是否将存储整个内容,而不是仅将这两个版本之间的差异(printf(“hello,git”)存储为svn等
Git存储文件的全部内容。但是当文件没有更改时,它不会占用额外的空间
阅读以下关于Git pack文件格式的精彩答案:
关于SHA1
文件(和其他内容)以“blob”的形式存储。每个字节序列都有自己的sha1代码,这对它来说非常独特
关于SHA1,以下是正确的:
- 推/拉时,仅传输更改的文件
- 立即检查当前更改的状态
- 允许您跟踪内容相同的N个文件,仅替换Git中的单个文件
- 不应用连续的补丁
- 您可以从一个分支中排除提交,将它们拉到另一个分支,更改它们的顺序
git add --patch
以交互方式在索引和工作树之间选择大块补丁,并将它们添加到索引中。这让用户有机会在向索引添加修改内容之前查看差异
以下是我最喜欢的关于Git的插图:
git会存储整个内容而不是只存储差异吗?[…如果是这样]有什么意义
对。这就是为什么构建好的git历史变得如此简单,而且足够反直觉地说,它还可以带来更好的压缩效率
(编辑:将lotsa迂腐和精化放在修订历史中)git是否会存储整个内容,而不是仅将这两个版本之间的差异(printf(“hello,git”)存储为svn等?是的,但它最终可能会高效地存储这两个版本。[…]有什么意义?与SVN相反,您不必“应用”一系列修补程序即可获得特定版本。还有一个有用的链接: