日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

Git LFS使用注意事項(xiàng)

更新時(shí)間:

本文主要介紹了使用Git LFS注意事項(xiàng),以及常見問題的處理方式。

版本過低導(dǎo)致的報(bào)錯(cuò)異常

Git相關(guān)軟件版本過低可能導(dǎo)致Git LFS功能無法正常使用(例如 batch 接口報(bào)錯(cuò)等),特別是Windows操作系統(tǒng)下默認(rèn)安裝的版本通常較低。因?yàn)樾吕习姹局g存在兼容性的問題,可能進(jìn)而引發(fā)類似HTTP調(diào)用異常的情況,導(dǎo)致LFS功能無法正常使用。遇到類似情況,請(qǐng)檢查并升級(jí)本地git和git-lfs版本為最新版本后再試, 通??梢皂樌鉀Q,下方為相關(guān)工具的下載地址:

說明

未安裝git-lfs導(dǎo)致無法完整拉取文件

如果要拉取包含Git LFS文件的代碼倉庫,則必須在對(duì)應(yīng)環(huán)境安裝git-lfs,具體可參見如何使用Git LFS?

說明

示例說明:

  • 場景1:用戶A本地推送若干Git LFS文件到遠(yuǎn)端成功。用戶B從遠(yuǎn)端拉取倉庫,同時(shí)用戶B環(huán)境未安裝git-lfs,則拉取后文件內(nèi)容為Git LFS Pointer文件內(nèi)容(version,oid和size),而無法將真正存儲(chǔ)在Git LFS的文件拉取到本地。

  • 場景2:用戶A本地推送若干Git LFS文件到遠(yuǎn)端成功,并且這些文件是CI/CD依賴的相關(guān)資源。CI/CD在構(gòu)建或者測試時(shí)失敗,原因是在CI/CD運(yùn)行的環(huán)境中沒有安裝git-lfs,導(dǎo)致拉取下來的文件為Git LFS Pointer文件而非真實(shí)文件。

如上場景均需要在本機(jī)或構(gòu)建機(jī)器上安裝git-lfs,安裝后使用普通Git命令即可正常拉取完整服務(wù)端文件。

如何將歷史提交中的大文件遷移至Git LFS

如果Git存儲(chǔ)庫的提交歷史中已有大文件,則git lfs track不會(huì)追溯跟蹤它們,而只會(huì)從新的提交開始應(yīng)用Git LFS。如果您希望遷移歷史提交記錄中的大文件到Git LFS,可以使用git lfs migrate命令進(jìn)行遷移。

模擬將歷史提交中的bigfile后綴的文件,首先將bigfile后綴的pattern進(jìn)行untrack:

$git lfs untrack "*.bigfile"                                                                                                                                                                                  
Untracking "*.bigfile"

隨后,添加若干不同大小的多個(gè)bigfile文件,執(zhí)行git addgit commit后查看提交信息:

$git log -p                                                                                                                                                                                                   
commit 1ca6e34006c6c1206563e8900d17c1503d9b4dce (HEAD -> test, origin/test)                                                                                                                                   
Author: dyroneteng <tenglong***@alibaba-inc.com>                                                                                                                                                              
Date:   Thu Sep 17 14:09:24 2020 +0800                                                                                                                                                                        
                                                                                                                                                                                                              
    old non LFS files                                                                                                                                                                                         
                                                                                                                                                                                                              
diff --git a/.gitattributes b/.gitattributes                                                                                                                                                                  
index c441ad2..e69de29 100644                                                                                                                                                                                 
--- a/.gitattributes                                                                                                                                                                                          
+++ b/.gitattributes
@@ -1 +0,0 @@
-*.bigfile filter=lfs diff=lfs merge=lfs -text
diff --git a/10m.bigfile b/10m.bigfile
new file mode 100644
index 0000000..6c5d403
Binary files /dev/null and b/10m.bigfile differ
diff --git a/11m.bigfile b/11m.bigfile
new file mode 100644
index 0000000..15ae5f2
Binary files /dev/null and b/11m.bigfile differ
diff --git a/12m.bigfile b/12m.bigfile
new file mode 100644
index 0000000..202d95c
Binary files /dev/null and b/12m.bigfile differ
diff --git a/13m.bigfile b/13m.bigfile
new file mode 100644
index 0000000..5b02d1f
Binary files /dev/null and b/13m.bigfile differ
diff --git a/14m.bigfile b/14m.bigfile
new file mode 100644
index 0000000..ad3b355
Binary files /dev/null and b/14m.bigfile differ
diff --git a/15m.bigfile b/15m.bigfile
new file mode 100644
index 0000000..a8510df
Binary files /dev/null and b/15m.bigfile differ

可以看到,在當(dāng)前的提交1ca6e34006c6c1206563e8900d17c1503d9b4dce中,LFS untrack已經(jīng)生效,這是因?yàn)閎igfile的diff內(nèi)容不是Pointer文件內(nèi)容,而是二進(jìn)制文件。

隨后可以執(zhí)行git lfs migrate info同時(shí)指定分支名作為參數(shù),查看該分支Git LFS的相關(guān)信息:

$git lfs migrate info --include-ref=refs/heads/test
migrate: Sorting commits: ..., done.                                                                                                                                                                          
migrate: Examining commits: 100% (3/3), done.                                                                                                                                                                 
*.bigfile       79 MB   7/7 files(s)    100%
*.gitattributes 46 B    1/2 files(s)     50%

具體遷移的方式,可以執(zhí)行git lfs migrate import,同時(shí)指定--include-ref指定分支名以及指定--include指定遷移File Pattern作為參數(shù),進(jìn)行:

$git lfs migrate import --include-ref=/refs/heads/test --include="*.bigfile"
migrate: Sorting commits: ..., done.                                                                                                                                                                          
migrate: Rewriting commits: 100% (3/3), done.                                                                                                                                                                 
  master        8032589f47a748171e84da94ce6440fe139e99f9 -> 8032589f47a748171e84da94ce6440fe139e99f9
  test          1ca6e34006c6c1206563e8900d17c1503d9b4dce -> 7b1fbac772434d084b4681538602cdf69bf3d8ac            
migrate: Updating refs: ..., done.                                                                                                                                                                            
migrate: checkout: ..., done.

執(zhí)行上述的遷移命令,從標(biāo)準(zhǔn)輸出結(jié)果中可以看到,master分支的版本沒有產(chǎn)生變化,因?yàn)椴⑽粗付ㄟw移master分支,而遷移指定的test分支版本已經(jīng)被更新為7b1fbac772434d084b4681538602cdf69bf3d8ac

$git show 7b1fbac772434d084b4681538602cdf69bf3d8ac
commit 7b1fbac772434d084b4681538602cdf69bf3d8ac (HEAD -> test)
Author: dyroneteng <tenglong***@alibaba-inc.com>
Date:   Thu Sep 17 14:09:24 2020 +0800

    old non LFS files

diff --git a/10m.bigfile b/10m.bigfile
new file mode 100644
index 0000000..f252459
--- /dev/null
+++ b/10m.bigfile
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e5b844cc57f57094ea4585e235f36c78c1cd222262bb89d53c94dcb4d6b3e55d
+size 10485760

### .......
### .......
### .......
### 省略部分輸出

在被覆蓋的提交7b1fbac772434d084b4681538602cdf69bf3d8ac上,可以看到和之前的提交1ca6e34006c6c1206563e8900d17c1503d9b4dce發(fā)生了變化,前者提交的實(shí)際二進(jìn)制文件差異不顯示,而后者已經(jīng)變?yōu)榱薌it LFS Pointer文件。最后,如果希望提交在遠(yuǎn)端生效,需要強(qiáng)制push到遠(yuǎn)端倉庫,執(zhí)行:

$git push --force
重要
  • 不建議一次性遷移倉庫的全部對(duì)象變更為Git LFS,可能會(huì)存在超時(shí)等未知情況,給出的建議為:按照指定分支的方式遷移,參數(shù)--include-ref。

  • 強(qiáng)烈建議在遷移Git LFS前在本地備份Git倉庫,即使遷移異常也可以完整回退到最初倉庫狀態(tài)。

  • git-lfs-migrate的使用方式參見git-lfs-migrate遷移工具說明文檔。

  • 更多場景的詳細(xì)遷移指南參見LFS 遷移指南。

相關(guān)資料