帶有大文件的 GitHub 項目的創建與拉取——使用 Git Large File Storage (LFS)

1.0 簡介

GitHub與Gitee等是我們常用的代碼託管平臺,但GitHub有一個限制,單次上傳不能超過100M大小限制。💡想要上傳超過100M大小的文件,就需要藉助Git LFS。

官方文檔

1.1 爲當前用戶配置 Git LFS

每個用戶執行一次即可:

git lfs install
告訴 Git LFS 需要追蹤哪些文件。例如,追蹤 .tar.gz 格式的壓縮文件
git lfs track "*.tar.*"

上一步驟將自動生成 .gitattributes 文件,將其添加到暫存區

git add .gitattributes

向暫存區中添加剩餘變更、提交、推送

git add --all
git commit -m "first commit"
git push orgin main

1.2 拉取含有大文件的 GitHub 倉庫

直接 clone 即可。若在安裝 Git LFS 前執行了 clone,則拉取下來的倉庫中並不包含大文件本體,取而代之的是指向其 LFS 存儲對象的文件指針,此種情況下,可通過在本地倉庫中執行下述命令來 拉取文件指針所指向的完整對象:

git lfs pull

1.3 轉換歷史數據到LFS

有時候我們的文件已經在repository中了,比如很多歷史提交的文件,我們想要將其轉換稱爲LFS存儲該怎麼辦呢?

lfs提供了一個migrate命令,用來進行文件的轉存。

git lfs migrate

要想使用migrate命令,需要安裝 Git LFS v2.2.1版本以上。

比如我們想要migrate所有的tar.gz文件,可以這樣寫:

git lfs migrate import --include="*.tar.gz"

上面的命令只針對的是本地的branch,如果要migrate遠程的branch,可以添加一個–include-ref參數,如下所示:

git lfs migrate import --include="*.tar.gz" --include-ref=refs/heads/master 

然後強制提交庫即可:

git push --force

最後,上面的命令雖然將歷史的git objects 轉換成了 lfs objects,但是本地的.git文件中並沒有變化,所以還需要執行下面的命令對.git文件夾進行清理:

git reflog expire --expire-unreachable=now --all
git gc --prune=now
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章