2011-02-10 96 views
53

The official Git doc说:什么是git“快照”?

$ git diff test

这会告诉你什么是当前的工作目录,并在“测试”分支

作为一个新手快照之间的不同,这是非常令人困惑。我从来没有听说过快照这个词。他们是否指“测试”分支的“头”?

+7

您可能还会喜欢[The Git Parable](http://tom.preston-werner.com/2009/05/19/the-git-parable.html),它以故事形式构建了Git的概念其中一个核心思想是快照。 – Cascabel 2011-02-11 00:23:33

+1

谢谢我有同样的问题。看着Git的寓言,并在https://git-scm.com/book/en/v2/Getting-Started-Git-Basics,我将“快照”理解为目录中每个更改文件的完整副本,加上指向同一目录中所有未更改文件的指针。那是对的吗? – ouonomos 2015-11-18 05:37:27

回答

20

快照是特定时间点某事物(例如文件夹)的状态。在这种情况下,快照意味着测试分支的当前内容,这不一定是头版本。

+0

@jens:这里使用快照作为外行人提交的同义词。提交对象本质上是元数据(作者,日期,消息)和工作树内容的快照(表示为树对象)。有关更多信息,请参阅[The Git Object Model](http://book.git-scm.com/1_the_git_object_model.html)! – Cascabel 2011-02-11 00:17:04

+0

我不能直接评论git的情况,但在SVN的情况下,你可能会在分支和另一个文件夹中有一些更改(未定义,仅限于你的硬盘)你可以将这些相互区分开来。我想这个概念也存在于git中。 – Femaref 2011-02-11 00:17:34

+0

@jens:另一部分是分支只是一个指向提交的指针,所以当你说`git diff test`时,你真的是指“与`test`分支指向的提交差异”。 – Cascabel 2011-02-11 00:17:48

2

首先,这不是官方的git文档。这是一本由社区撰写的书。虽然它可能相当权威,但这不是福音。

AFAIK,“快照”在git中没有任何形式上的含义。当然git diff manpage没有提到它。在给定的上下文中,它可能是一本非正式的参考书,它是如何在本书的例子中使用“测试”分支的,即作为正在进行的工作的快照,用于测试目的。

35

术语快照被用于在GIT参考位点以及

它是“修正”替换术语。在其他版本控制系统中,对单个文件的更改进行跟踪并作为修订引用,但使用git可以跟踪整个工作空间,因此他们使用术语快照来表示差异。

http://gitref.org/index.html

而是每个文件单独写一个工具,它的版本,例如Subversion的,我们可能会写一个,使得它更容易储存我们项目的快照,而不必每次都复制整个目录。

这实质上就是Git。你告诉Git你想用git commit命令保存项目的快照,它基本上记录了项目中所有文件的外观。然后,大多数命令与这些清单一起工作,以查看它们如何区分或拉出内容等。

如果您将Git作为存储和比较和合并项目快照的工具,可能会更容易了解正在发生的事情以及如何正确做事。

1

我的理解是,快照通常只是git用来存储其数据的“实体”。相对于像SVN那样将数据存储为一系列“deltas”/变更集,例如,您对git所做的每个提交都会创建一个“提交对象”,该提交对象引用该时间点代码的快照。

正如@Femaref所说,它是特定时间的代码状态,并不一定意味着它是测试分支的头部,但可以在您看到的示例中。

-1

以下是一些其中术语快照使用上下文:

  1. 新修订版本是通过走索引的快照创建。
  2. 提交是给定时间回购的快照。
2

快照是一个存储库,截图是视频。

Git仓库包含一系列快照,这是一群由Git的树对象代表的文件和文件夹,存储在库中的文件夹.git的。当您commit时,您将当前工作目录存储为新的快照提交)。