git add 有什么作用?

What does git add do?

我用 git init 初始化了一个文件夹。 其中内容的大小约为 600MB。做了git add后,.git的大小变成了600MB,那么,它真的存储了我文件的所有内容吗?我以为 git add 只是将文件视为要跟踪的文件,但如果是这样,大小应该不会那么大,对吧? 纠正我,如果我错了。

如果是,您能否建议一些更简单的方法来在本地跟踪我的更改?

更新:即使git gc,大小也没有太大变化 实际上,我的要求是,我正在存储视频、文本文件、Pdf 文件等……而且我一直在更改它们,所以,有时我想回去。 由于视频量大,越来越臃肿

我觉得除了git别无选择。谢谢大家

.git 文件夹跟踪被跟踪文件的所有版本。 git add 将标记更改(通过将它们复制到临时区域),然后 git commit 将它们记录在存储库中。是的,它确实存储了您文件的所有内容;不仅如此,还有所有 版本 的内容。否则它就不是一个版本跟踪器 - 如果不在单独的位置记录内容,我能想到的返回到文件的早期版本的唯一方法是 time-travel 机器,并且 git 还没有实现。 :)

也就是说,git 是为了跟踪 源文件 而开发的,您拥有 600MB 的源文件的可能性很小。您应该避免添加数据文件,或者是您的代码或编译过程的产物的文件(以及,出于不同的原因,任何可能因开发人员而异的配置文件)。为了解决这个问题,你应该在存储库中做的第一件事就是制作一个 .gitignore 文件,并检查 git status 是否有任何你不想提交的文件被 git.

git add 都将文件标记为已跟踪,并将其复制到暂存区。在提交之前复制到暂存区允许一个人构建一个提交片段,对于 git add -pgit add -i.

特别有用

您可以使用 git add --intent-to-add 仅跟踪文件,但最终您需要添加并提交它。

好消息是 Git 将压缩这些文件,因此在提交它们之后 运行 git gc 它们应该小得多,假设它们是可压缩的。

如果您提交对大文件的更改,尤其是大二进制文件,您的存储库将变得非常大。而是使用 Git Large File Storage 将大文件的历史存储在云端。

git add 命令将工作目录中的更改添加到暂存区。它告诉 Git 你想在下一次提交中包含对特定文件的更新。但是,git add 并没有真正以任何显着方式影响存储库 — 直到您 运行 git 提交之前,更改不会被实际记录。

您可以使用 .gitignore 文件来删除我们可以生成或下载的不需要的文件 例如:dll,node_modules.

link 向您展示了如何将 .gitignore 文件添加到您的存储库