Git如何检索从本地和远程存储库中删除的已删除文件?

问题描述:

让我惊讶的是,如何删除一次并覆盖新文件的文件可以随时在我们想要的时候检索。 Git会永久存储服务器上的每个文件实例吗?Git如何检索从本地和远程存储库中删除的已删除文件?

+2

存储与每次提交相关的每个文件的每个版本都是版本控制系统的*目的*。有关内部信息,请参阅Pro Git书https://git-scm.com/book/en/v2/。 – torek

+0

我明白了。我只是想知道这是如何完成的。 –

+0

细节变得越来越复杂,但http://*.com/a/8267078/1256452有一个很好的概述(尽管没有插图)。 – torek

这是我的理解。 Git将blob存储为散列名称。一个文件存储为一个散列列表,并通过对它组成的blob进行协调(对于小文件通常只有一个blob)而在工作树上创建。不同版本的同一个文件可以通过协调不同的blob来完成。 Blob存储在.git目录中,只要存在对它们的引用即可保留。即如果任何标签,提交,reflog,存储等包含引用blob的文件(或其他)。 'git gc'会删除两周以上的未引用的blob。