git clone與git pull的時候不拉大文件

很多時候,人們需要在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的時候仍然去拉大文件了。
方法二未能生效的原因暫未找到。讀者可自己一試。

(完)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章