当您更改工作目录中的文件时,git确切地知道更改了哪些文件。它是怎么知道的?
Q1)是否在提交时计算校验和,并在事件驱动的更改(例如在工作目录中创建新文件)时重新计算校验和。
Q2)除了工作目录文件之外,您的本地驱动器是否将其余文件保存在某个位置,该位置会随着您包含更多项目而增加?我的驱动器似乎更满了添加了一个新的文件夹,我正在尝试跟踪,现在我想撤销我正在尝试跟踪的文件夹,我如何回收该空间。我试图用GIT做一些花哨的事情,比如跟踪我本地项目文件和其他文档的变化,这样我就可以看到发生变化的文档,并只用这些文件更新我的备份。
发布于 2017-07-18 21:05:11
Git根据文件的内容计算哈希,并在提交时存储快照。哈希既可用作内容的标识符,也可用作将快照与较新版本进行比较的一种简单方法。
因此,如果你有一个提交的文件版本和一个工作副本版本,Git所要做的就是计算工作文件的哈希值,并将其与提交的快照中已经计算出的哈希值进行比较。如果散列不同,那么它知道有些东西已经改变了。此计算仅在您请求时发生(例如,git status
或git diff
)。它并不是不断地自己检查。
Git将所有内容都存储在存储库中。它通常位于项目根目录下的.git/
目录中。整个存储库历史和内容都在里面,所以根据历史记录包含的内容,有时它们会变得很大。这实际上依赖于项目。Git在压缩内容方面做得很好,但如果你要添加大的预压缩文件,它只能做这么多来压缩它们。
您在问题中提到的.git/objects/
目录是git存储库中的主要内容存储。所有的文件快照和元数据(如目录结构、提交对象、标记)都存储在那里。因此,它是存储库文件夹中最大的部分是很正常的。
取消创建git存储库很容易-只需删除.git
文件夹即可。然而,这是一个破坏性的动作,你不能撤销。如果您不介意丢失存储库历史记录(或者,如果您在其他地方创建了一个副本,如GitHub,或备份副本,并且您可以依赖另一个副本),请删除它。
https://stackoverflow.com/questions/45176884
复制相似问题