首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >快照概念

快照概念
EN

Stack Overflow用户
提问于 2011-09-21 19:22:02
回答 1查看 1.2K关注 0票数 1

Git 基本术语中有一个快照的概念。

Git工作流中使用了这个概念:

  1. 修改工作目录中的文件。
  2. 对文件进行编排,将它们的快照添加到暂存区域。
  3. 您可以执行提交操作,它将文件保存在暂存区域中,并将快照永久存储到Git目录中。

你能解释什么是快照,并显示一些文件和快照的小例子吗?为什么Git使用快照而不是像在其他VCS中那样造成差异?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-21 20:24:22

快照只是指文件在给定时间点上的内容。所有版本控制系统都从概念上对快照进行操作。您希望能够在过去的任何给定点上看到源代码的样子。为了节省存储空间,它们也都存储差异。git是唯一的地方有两种方式:在内部计算和存储差异的方式与文件的历史没有直接关系,并且这些差异不会在每次可能的时候被重新计算。

假设您有一个1000字节的文件,可以在几乎每个构建上进行更新。如果您更改其中的一个字节,git将临时存储文件的一个全新副本,并更改一个字节。在这里,人们兴奋地说:“天哪,git太蠢了,它应该马上存储差异。我坚持颠覆。”

但是,请考虑如何实际使用源代码管理。几乎所有你想做比较的事情都是从你上一次推动以来发生的变化。因为它还没有计算出差异,所以git恰好有一个完整的、容易访问的缓存,所有这些最近更改的文件,其他版本控制系统必须从版本1开始,并应用数百个差异来重建相同的内容。

然后,当您进行推送以共享您的更改时,将自动运行git gc,以便更有效地存储这些文件,以便在网络上传输,然后计算和存储差异。但是,它不一定是文件的版本n到版本n之间的区别。如果在多个文件中重复内容,git可以考虑到这一点。如果在多个分支中进行了相同的更改,则git可以考虑到这一点。如果文件被移动,git可以考虑到这一点。如果将来发现了一些可以提高效率的启发式方法,git可以在不破坏现有客户端的情况下考虑到这一点。这并不是一成不变的想法,即差异必须始终从一个连续版本到下一个版本。

与其他版本控制软件相比,像这样的基本设计决策使得git变得如此之快。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7505427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档