有没有办法在文件位于存储库中的同时忽略用于拉取的特定文件?

Is there a way to ignore a specific file for pulls meanwhile the file is in the repository?

我想添加一个大文件(例如模型)到我的 Git 存储库,以确保它不会丢失在某个地方,但是当其他人调用 git pull 时,文件应该被拉。

我检查了很多来源,但其中 none 解决了我的问题。也试图操纵 .gitignore,但仍然没有解决方案。

澄清一下:现在,在做一个项目时,只是其中的一部分需要使用模型。由于它不再使用,但将来可能会有一些场景使用它,我需要模型在存储库中(大小:606 MB)。将来,谁需要使用它,就应该能够从存储库中获取它。否则,它与项目的主要流程无关,只是与模型有关的问题。除了该人员将在上述问题中工作外,人们不需要使用存储库提取模型。这就是这个问题的动机。

没有直接 "git-native" 的方法来满足您的要求。 Git 是分布式版本控制系统,它的正常操作模式是为每个 repo 克隆提供完整的 repo 历史记录。

此外,Git 提交是整个项目文件树的有效存储快照(有关详细信息,请参阅 Git 书中的这一章 https://git-scm.com/book/en/v2/Git-Internals-Plumbing-and-Porcelain)。没有简单的方法可以只提取特定文件。

您有几个选择:

  1. 不要将此模型提交给 GIT。将它放在别处,然后 link 以某种方式从您的 git 存储库中获取它。例如,对于 Github,您可以使用 https://help.github.com/en/github/managing-large-files/distributing-large-binaries。或者只是将其放入您的团队云磁盘和 repo 自述文件中的 link。虽然这看起来像是 "low tech" 方法,但我认为它最适合您的场景。

  2. 使用 Git LFS。 https://git-lfs.github.com/ 使用 Git LFS 主仓库仅保存 "links" 大文件,您可以精细控制个人用户想要拉取的内容。话虽这么说,但只有当您想要在整个存储库的上下文中准确维护它们的历史记录时,才值得这样做 and/or。对于一个永不更改的文件 GitLFS 团队流程开销和学习曲线在我看来不值得从中受益。

  3. 只需为您的模型创建单独的 Git 存储库。 600MB 绝对大于 Git 的正常文件大小,您可能很容易达到 git 主机(如 GitHub)的限制。但是您可能会发现这种大小的本地 Git 存储库可以正常运行。