【问题标题】:What does git add do?git add 有什么作用?
【发布时间】:2021-01-02 22:22:55
【问题描述】:

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

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

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

我认为除了git之外别无选择。谢谢各位

【问题讨论】:

  • 它迭代添加的文件。每个文件的内容都存储为.git 中的blob 对象。如果多个文件具有相同的内容,则只创建一个对应的 blob。基本上,所有内容都被存储。一开始它们可能是松散的物体。在git gc 之后,可以将它们压缩为可能更小的打包对象。

标签: git version-control git-add


【解决方案1】:

git add 都将文件标记为已跟踪,并将其复制到暂存区域。在提交之前复制到暂存区域可以让您分段构建提交,这对于git add -pgit add -i 尤其有用。

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2011-01-12
        • 2013-02-07
        • 1970-01-01
        • 2014-08-11
        • 2020-08-11
        • 2012-06-13
        • 2023-02-23
        • 2021-08-10
        • 2013-06-02
        相关资源
        最近更新 更多