本文主要幫助您快速在Codeup倉庫中啟用大文件存儲( LFS)以更高效地管理二進制文件,以及為您提供三方代碼庫遷移到Codeup時LFS文件的遷移方案。
適用場景
分為以下幾種場景,請對照實際情況,執行相應的操作:
Codeup倉庫-啟用LFS。
Codeup倉庫-啟用LFS,并修改歷史提交中的文件至LFS管理。
遷移第三方代碼庫至Codeup-啟用LFS。
遷移第三方代碼庫至Codeup-啟用LFS,并修改歷史提交中的文件至LFS進行管理。
遷移已經啟用了LFS的第三方代碼庫至Codeup管理。
有關LFS的安裝,使用和原理等其他細節,請參考Git 大文件存儲。
LFS 的安裝和基本使用
請參見如何使用Git LFS?, 安裝完成后,可以運行:
$ git lfs -v
來查看LFS是否正確安裝及對應版本。
在Codeup中使用LFS管理二進制文件
Codeup 代碼庫-啟用LFS
假設倉庫的歷史提交中不存在希望使用LFS管理的大文件(二進制文件),或者本身就是從空庫開始,那么操作會非常簡單。以下為如何在一個不需要修改歷史提交的Codeup庫上,開啟并使用LFS功能。
強烈建議在操作前備份倉庫。以下命令用于備份倉庫至本地的 backup 文件夾:
$ git clone --bare gi*@codeup.aliyun.com:<企業或組id>/<倉庫地址> backup
備份完成后,進入本地已有的倉庫,或者重新克隆,作為工作目錄。假如要將PNG的圖片文件使用LFS進行管理,可以執行:
$ git lfs track "*.png" Tracking "*.png"
之后,可以向倉庫中加入PNG文件,例如:
$ echo test > test.png
改動完成之后,執行add以及commit,并將改動推送到遠端倉庫。
$ git add . $ git commit -m "使用LFS管理png文件" $ git push
會在輸出中看到
Uploading LFS objects done
的相關字樣,說明 LFS 已經啟用,對應文件也已上傳。打開代碼庫頁面,可以看到該PNG格式的圖片已經被標記為使用LFS管理了。
在代碼庫
的管理頁面,也能看到LFS對象的總體積,文件類型,操作人等信息。隨后,重新克隆一次倉庫。執行:$ git clone gi*@codeup.aliyun.com:<企業或組id>/<倉庫地址>
可以看到,png文件被自動的檢出,并不需要額外的操作。
Codeup倉庫-啟用LFS,并修改歷史提交中的文件至LFS管理
在很多情況下,已經向倉庫中已經添加了許多的大文件。開啟LFS只會對之后的提交生效,并不會影響這些歷史的文件。那么,如何將這些歷史的文件也改用LFS來管理呢?可以利用git lfs migrate
命令來完成。
首先,還是建議將倉庫進行備份:
$ git clone --bare $ gi*@codeup.aliyun.com:<企業或組id>/<倉庫地址> backup
建議按照分支來進行遷移,一次遷移一個分支。
進入本地倉庫目錄,執行:
$ git lfs migrate import --include-ref=master --include="*.png"
會看到類似的輸出:
migrate: Sorting commits: ..., done. migrate: Rewriting commits: 100% (2/2), done. master 2d2c813aac4b2247e4b79b3721cca45580f15282 -> 5634c182663a24617bd26d0d82a3966686687173 migrate: Updating refs: ..., done. migrate: checkout: ..., done.
可以看到,歷史的提交已被改寫,這樣就遷移了master分支上的歷史png文件至LFS管理。
接著,再遷移dev分支,執行:
$ git lfs migrate import --include-ref=dev --include="*.png"
這樣,就完成了dev分支的遷移,如果有其他分支,進行類似的操作即可。
遷移完成后,執行以下命令,將遷移后的分支和標簽推送至遠端:
$ git push --all --force $ git push --tags --force
這樣一來,歷史的png文件也被LFS管理起來。之后添加的png文件,也會由LFS來進行管理。
如果分支特別多的情況下,可以選擇一次性遷移所有分支。執行以下命令可以遷移本地所有分支的歷史png圖片至LFS管理:
$ git lfs migrate import --everything --include="*.png"
說明一次性遷移所有分支,可能導致上傳文件超時等問題。如果出現類似的問題,建議按照分支逐個遷移。
遷移第三方代碼庫至Codeup-啟用LFS
如果希望遷移其他平臺的倉庫至Codeup,并且啟用LFS,那么可以這樣操作:
在Codeup上導入其他平臺的倉庫。
完成后按照Codeup 代碼庫-啟用LFS,開啟LFS。
遷移第三方代碼庫至Codeup-啟用 LFS,并修改歷史提交中的文件至LFS進行管理
如果其他平臺的倉庫中,已經有了一些大文件,此時希望遷移倉庫至Codeup,同時將歷史文件交由LFS管理,可以執行以下操作:
參考Codeup倉庫-啟用LFS,并修改歷史提交中的文件至LFS管理中的前三個步驟,遷移本地所有分支的歷史提交,但不執行
git push
的操作。在執行
git push
操作前,執行:$ git remote add codeup <Codeup倉庫地址>
執行:
git push --all --force codeup git push --tags --force codeup
打開Codeup的倉庫頁面,就能看到倉庫已經成功上傳。
遷移已經啟用了LFS的第三方代碼庫至Codeup管理
如果已經在其他平臺啟用了LFS,此時想要將倉庫遷移至Codeup,那么可以按照以下步驟操作:
首先,執行一次全量的克隆:
$ git clone --bare <其他倉庫的地址>
然后,將LFS的文件都下載到本地:
$ git lfs fetch --all origin
下載完成后,修改倉庫的remote地址至Codeup:
$ git remote add codeup gi*@codeup.aliyun.com:<企業或組id>/<倉庫名稱>
然后,推送LFS文件到Codeup:
$ git lfs push --all codeup
完成后,接著執行:
$ git push --all codeup $ git push --tags codeup
這樣,就完成了已有LFS倉庫遷移至 Codeup 的操作。
如果遷移的LFS文件體積較大,在推送倉庫時可能會出現超過服務器連接時長限制等情況。具體表現為 git push 命令推送 LFS 文件后即結束,不更新遠程倉庫的引用。如果出現這樣的問題,可以將推送操作分兩步執行:
首先使用
git lfs push --all origin
命令,推送LFS文件至服務器。使用
git push --all --no-verify
命令,跳過LFS文件的推送及檢查,并更新遠程倉庫的引用。
關于LFS的更詳盡使用說明,請參見 Codeup Git LFS 功能簡介。