2016-06-17 153 views
0

Git的文档状态:含义git的承诺

你提交,或保存在Git的项目的状态时,它都会基本上采用的是什么您的所有文件看起来像在那一刻

图片

它基本上是什么意思“拍照”?

+0

另请参见http://stackoverflow.com/a/8198276/6309 – VonC

+0

确切地说在文档中的位置? – 1615903

+1

这接受的答案:https://stackoverflow.com/questions/33455666/git-why-exactly-is-the-claim-git-is-based-on-differences-between-files-wrong/33455768#33455768有一个内部什么是git commit的好摘要。 –

回答

0

它要求存储库中的所有文件排成一行并说“奶酪”。然后拍摄一张X光图片,显示所有的二进制数据。

然后使用此二进制数据来确定文件夹在该点的状态,以便稍后(在不同位置)重新创建它或制作diff。

0

进行提交,然后运行git log -1 --pretty=raw,您将在输出中看到tree xxxxxx。树是当前git仓库快照的sha1。如果两棵树具有相同的sha1,我们可以确定它们具有相同的内容。您可以运行git ls-tree sha1以查看由快照组成的树或快照具有的内容。你会看到一个树木和斑点的列表,有时也与他们的sha1s一起提交。 blob指的是一个文件。树指的是一个文件夹。您可以运行git cat-file -p blob-sha1git show blob-sha1查看blob的内容。每个blob都是不同时间的文件快照。如果一个文件被改变了,它的blob和sha1也会改变。但是,如果内容相同,我们可以通过git hash-object获得相同的sha1。所以基本上,提交是指代表git repo状态的树(git repo的根文件夹)。一个树由git仓库中的其他树(子目录)和blob(文件)组成。当我们提交时,它会记录git repo的状态,当时文件夹和文件的样子。通过提交,我们可以重建由树和blob描述的整个git回购。