2012-04-06 146 views
8

我對Git相當陌生,並且盡力找到一些關於這個問題的文檔無濟於事。git submodule add fatal:不是Git倉庫

這裏是我的命令:

$ git submodule add https://github.com/joliver/EventStore.git externalsource/JOliverEventStore/ 

致命的:不是git倉庫:../.git/modules/externalsource/JOliverEventStore 無法籤子模塊 'externalsource/JOliverEventStore'

我在我的回購根目錄中,目前沒有/externalsource/JO liverEventStore/的目錄。錯誤是在談論我不知道的目錄。

如果我的子模塊添加到根目錄是這樣的:

$ git submodule add https://github.com/joliver/EventStore.git JOliverEventStore 

我有沒有問題,它會在根目錄下的文件夾。

任何有識之士將不勝感激。

+0

你嘗試createing的'externalsource'目錄,然後cd'ing它並添加子模塊? – 2012-04-06 22:06:13

+0

我沒有和增加你必須從根目錄做這樣一個子模塊,當是錯誤回 – 2012-04-06 22:30:57

+0

你必須要在JOliverEventStore'的'在原始命令末尾的斜槓。也許Git是太愚蠢到認爲要檢出到'JOliverEventStore'的目錄下'JOliverEventStore'(不存在)? – 2012-11-20 12:08:15

回答

11

它可以依靠的Git你的版本正在使用:此recent thread (February 2012)提到了一個錯誤:

由於最近一個子模塊與名稱<name>已在.git/modules/<name>目錄而工作樹中上層項目的它的git目錄包含指向那裏的gitfile

當在目前不存在的分支上添加相同的子模塊(在.gitmodules文件中找不到它)時,該名稱不會從該路徑初始化,因爲它應該如此。
當找到.git/modules/<name>目錄時,會導致在gitfile中輸入的路徑出錯,因爲它很高興使用 - 現在爲空的名稱。
即使我們在目錄層次結構中有更深的路徑,它也總是隻指向一個目錄。

但是更一般地,使用的git submodule<path>論點:

<path>是用於克隆的子模塊在上層項目存在的相對位置。

  • 如果<path>不存在,則通過從指定的URL進行克隆來創建子模塊。
  • 如果<path>確實存在並且已經是有效的git存儲庫,則將其添加到變更集而不克隆。
    提供第二種形式以輕鬆從頭開始創建新的子模塊,並假定用戶稍後將子模塊推送到給定的URL。

eoinoc提到in the comments另一個原因,這是在這個問題: 「git status returns fatal: Not a git repository but .git exists and HEAD has proper permissions」 詳述。

我的回購的位置發生了變化,我需要更新git的配置文件。

+0

謝謝馮。我也看過那篇文章。更新是按順序進行的。儘管如此,我沒有看到它是否在上一版中得到了解決。這似乎是這樣一個共同的任務,我很驚訝地看到從混帳1.6.x版(包含山獅)問題 – 2012-04-07 17:58:27

+0

升級到1.8.1解決了這一問題。 – 2013-01-11 22:05:37

+1

該錯誤不是我看到相同錯誤信息的原因。我回購的位置發生了變化,我需要更新的git的配置文件:http://stackoverflow.com/questions/10144149/git-status-returns-fatal-not-a-git-repository-but-git-exists-and -head-有螺旋槳 – eoinoc 2013-05-14 06:02:27