首頁  >  問答  >  主體

對於存在 submodule 的 git 倉庫怎麼 clone 最少的程式碼?對比 git clone --depth=1

單純從github 下載使用軟體時,可以透過depth 參數來下載最先的程式碼,但是對於有submodule 的項目,執行git submodule update --init --recursive --depth=1 ,因為submodule 是shallow clone, 所以無法checkout 到目標commit。

這種情況有什麼辦法可以解決?

怪我咯怪我咯2703 天前1096

全部回覆(1)我來回復

  • 仅有的幸福

    仅有的幸福2017-05-02 09:53:54

    我只找到一個fetch/clone各一次的,頗麻煩的方法:

    1. git submodule update --init --depth=1 這時clone到的commit通常都不是submodule註冊的那個,所以會報錯

    2. git ls-tree HEAD:(submodule的路径) 找到想要的那個commit,如

      `160000 commit abb03163aeafb8b7fc1efd2413d9f077bcdbeed9  tidy-html5` 的 `abb031`就是
    3. cd到submodule 的clone repo (如.git/modules/tidy-html5), fetch那个commit git fetch abb031

    4. git submodule update --no-fetch

    回覆
    0
  • 取消回覆