最近克隆一個項目,爲了加快速度和節省空間,在克隆的時候設置了 depth=1 也就是隻記錄最近一次提交,在 SourceTree 裏操作如下
克隆之後文件歷史如下,只會有一行記錄
此時想要切換分支發現遠端分支顯示不全,只有淺克隆的分支。
執行 git branch -a
顯示也是如此
經過查詢文檔 git-remote - set-branches 找到了 git remote 命令,用來管理追蹤的遠程分支,其中 set-branches 命令用來更改追蹤的分支,可以在倉庫設置完成後來追蹤新的遠程分支。這裏直接使用 git remote set-branches origin '*'
,如果只想追蹤某個分支,也可以使用 git remote set-branches origin 'branch-name''
命令。不確定分支名字可以使用 git ls-remote origin
命令查看,origin 後面只需要跟紅框中的名字就行。
最後要做一次 git fetch -v
,在 SourceTree 中就是 Fetch。
然後就可以看到添加的遠程分支了。
最後,根據文檔 git-clone - depth 中的說明,造成看不見其他分支的原因,還是因爲在 clone 的時候使用了 --depth
參數相當於使用了 --single-branch
參數,此時只需要加上 --no-single-branch
即可。如果希望其他分支也是 shallow clone,則需要使用 --shallow-submodules
命令。粗略翻了一下,沒有在 SourceTree 克隆界面發現相關設置,可能還是需要用命令來實現以上需求。