假设我做了以下四次提交:
如果有人检查了这个回购,他们会下载大的“hello_world.jpg”吗?或者git是否足够智能,如果您处于最近的提交时,知道文件不存在,因此只下载最近需要的文件?
答案 0 :(得分:3)
默认情况下,Git会下载整个hello_world.jpg
图像文件,即使它不存在于任何特定分支的HEAD中。原因是如果您要检查JPG存在的早期提交,Git将需要该文件历史记录来创建相应的工作区。
出于这个原因,通常不建议提交大型二进制文件,因为它们会成为Git历史记录中的永久夹具。
如果你有一个非常大的文件并且想要避免在本地使用它,你可以使用浅层克隆。或者,另一个选项可能是使用过滤器分支等工具从历史记录中删除文件。但最好的做法可能是首先不提交这样的文件。
答案 1 :(得分:1)
默认情况下,git
会下载完整的历史记录。毕竟,可以克隆并检查任何提交:
git clone url/of/repo
git checkout commit-of-large-file
唯一需要网络访问的部分是初始clone
。如果您不想要完整的历史记录,请使用--depth
。
git filter-branch
可以帮助您完全从历史记录中删除大文件,但这可能会导致一些问题,必须小心使用。