2015-06-10 77 views
3

我想克隆一個混帳回購協議[1],已在.gitmodules定義一個子模塊:遞歸克隆一個git回購不拉子模

[submodule "PointInCircle"] 
     path = PointInCircle 
     url = https://github.com/midas-journal/midas-journal-843 

以下這些問題[2-4],我想:

$ git clone --recursive https://github.com/midas-journal/midas-journal-851 

如果我理解submodule小號正確,我顯然不應該有內部midas-journal-851目錄名爲PointInCircle與克隆到它的第二個回購。但是,沒有PointInCircle目錄被創建,並且據我所知,代碼不會被克隆到任何地方。良好的措施,我也試過......

$ git submodule init 
$ git submodule update 

...還有...

$ git submodule update --init --recursive 

......還有......

$ git submodule foreach --recursive git submodule update --init 

...在克隆的目錄中。每個命令運行時都不會向控制檯輸出任何內容,並且在目錄中看不到任何更改。

任何想法我做錯了什麼?

[1] https://github.com/midas-journal/midas-journal-851
[2] Cloning a git repo with all submodules
[3] How to `git clone` including submodules?
[4] 'git submodule update --init --recursive' VS 'git submodule foreach --recursive git submodule update --init'

回答

2

任何想法我做錯了嗎?

你沒有做錯任何事。該存儲庫的子模塊僅部分配置。

Submodules are defined by two things

子模塊從主存儲庫的所謂gitlink樹條目是指一種特定的內存儲庫是完全分開的內commit對象組成。 .gitmodules ...文件中位於源樹根部的記錄爲該子模塊分配了一個邏輯名稱,並描述了該子模塊將從中克隆的默認URL。

此存儲庫包含.gitmodules文件,但沒有gitlink對象。

GitHub上displays proper submodules with a grey folder icon,這是不存在從這個倉庫:

GitHub submodule

由於故障.gitmodules文件只包含一個條目,你的情況我建議

  1. 刪除.gitmodules文件,

    git rm .gitmodules 
    
  2. 添加適當的子模塊,

    git submodule add https://github.com/midas-journal/midas-journal-843 PointInCircle 
    
  3. 和承諾。

    git commit -m "Fix PointInCircle submodule" 
    

git commit輸出應顯示PointInCircle被添加與模式160000(指示gitlink),和存儲庫現在應正確配置。使用git submodule status可以肯定:

$ git submodule status 
9bc2651367f8cc5f47ac5f6c708db2f9a71d8fd8 PointInCircle (heads/master) 

你可能想開一個拉請求與修復的父版本庫,但由於它僅包含從三年前的一個承諾,我懷疑這是被遺棄的。