[英]How to convert a Git shallow clone to a full clone?
以下命令(git 版本 1.8.3)會將淺克隆轉換為常規克隆
git fetch --unshallow
然后,訪問原點的所有分支(感謝評論中的@Peter)
git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
git fetch origin
編輯: git fetch --unshallow
現在是一個選項(感謝 Jack O'Connor)。
你可以運行git fetch --depth=2147483647
從淺的文檔:
特殊深度 2147483647(或 0x7fffffff,帶符號的 32 位 integer 可以包含的最大正數)表示無限深度。
我只需要將回購深化到特定的提交。
閱讀man git-fetch
后,我發現無法指定提交,但可以指定日期:
git fetch --shallow-since=15/11/2012
對於那些需要漸進深化的人,另一個man
引用:
--deepen=<depth>
類似於 --depth ,除了它指定從當前淺邊界而不是從每個遠程分支歷史記錄的尖端提交的數量。
實現淺克隆到深克隆的兩種方式:
使用以下步驟下載分支:(這會下載分支的淺表副本,然后將其轉換為完整克隆,即帶來完整的分支及其歷史記錄)。
一個。 git 克隆 -b 分支http://git.repository/customSP01.git --depth 1
這會做一個淺層克隆(使用深度選項)只獲取一個分支(在您請求的深度)。
b. cd customSP01
c. git fetch -depth=100
d. get fetch -depth=500
....
e. git fetch --unshallow
//上面的命令會將淺克隆轉換為普通克隆。 但是,這並沒有帶來所有的分支:
然后,訪問所有分支。
f. git remote set-branches origin '*'
[此步驟也可以通過在 .git/config 中編輯以下行來手動完成。
fetch = +refs/heads/master:refs/remotes/origin/master
to(用 * 替換 master):
fetch = +refs/heads/*:refs/remotes/origin/* ]
g. git fetch -v
這會將淺克隆轉換為具有所有歷史記錄和分支詳細信息的深度克隆。
如果您使用以下命令代替步驟 a 中存在的命令,則可以避免步驟 f 和 g。 做淺克隆:
git clone -b branch --no-single-branch http://git.repository/customSP01.git --depth 1
你可以試試這個:
git fetch --update-shallow
上述消息都沒有成功。 我正在嘗試從淺克隆開始使用 git 標簽。
首先我試過
git fetch --update-shallow
哪種工作到了一半。 然而,沒有可用的標簽
git fetch --depth=1000000
最后一個命令真的獲取了標簽,我終於可以執行了
git checkout -b master-v1.1.0 tags/v1.1.0
並完成它。
高溫高壓
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.