很多时候,人们需要在git仓库里存储一些巨大的动辄数百MB甚至数GB的二进制文件以帮助编译或部署用。git 通过 lfs 支持大文件存储。
而这些大文件呢,往往也经常被更新。这就带来一个问题 - 开发人员并不需要这些巨大的二进制文件,而只是需要一些源代码文件即可。频繁地更新大文件,会浪费许多pull的时间。
另外,开发人员有的时候只想在Windows机器上用IDE开发代码,而开发机上编译部署。开发机所在的网络下载大文件很快,可Windows机器所在网络有时走的是VPN,就很慢甚至会经常出错。
这个时候,我们就会想,能不能不要去pull或clone这些大文件呢?
办法是有的。
方法一
GIT_LFS_SKIP_SMUDGE=1 git clone <repository-addr>
使用这种方法,以后即使 git pull, 也不会把大文件拉下来了。
如果以后想把大文件再拉下来的话,可以用 git lfs pull
如果是对于一个曾经正常clone下来的workspace,也可以用类似的方法去pull,则不会将大文件pull下来;而且以后再pull的时候也不会。
GIT_LFS_SKIP_SMUDGE=1 git pull
方法二
git config --global filter.lfs.smudge "git-lfs smudge --skip"
git clone <repository-addr>
这样会在 ~/.gitconfig 文件中增加2行:
[filter "lfs"]
smudge = git-lfs smudge --skip
如果将来想再拉大文件,可以运行:
git config --global filter.lfs.smudge "git-lfs smudge -- %f"
不过,根据笔者亲身试验,只有方法一生效了; 方法二虽然改变了 .gitconfig 文件,但在git clone的时候仍然去拉大文件了。
方法二未能生效的原因暂未找到。读者可自己一试。
(完)