2014-07-21 44 views
1

我有一個目錄樹,其中包含一個git存儲庫(我當時沒有想到)。然後在一個父親的兩個領導中,我做了一個git init,並試圖在該樹中添加所有內容。它沒有添加已經有.git目錄的子目錄中的文件,但我仍然沒有注意到,只是添加了這個目錄。 (我不確定我輸入的是什麼,但是在我看來,現在一切都已經完成了,儘管我仍然有點好奇,爲什麼在頂部添加並沒有添加所有內容;但是我放棄了這個想法)擺脫部分子模塊狀態

現在我注意到克隆外部存儲庫並不檢出內部存儲庫中的文件。經過一番調查後,我發現內部存儲庫似乎是外部的子模塊,但不知何故是不適合的。

之類的東西git submodulegit statusgit log別說是內庫,但試圖從內庫添加文件到外部存儲庫總是說:fatal: Path 'path/to/innerRepository/somefile' is in submodule 'path/to/innerRepository',即使我取下內.git目錄。

我現在想實現的是擺脫內部存儲庫(及其所有內容)的目錄是另一個存儲庫的一部分的信息。我想忘記舊的存儲庫並將文件檢入新的存儲庫。

我該怎麼做?

回答

1

刪除內部.git文件夾不足以說服父級回購站某個路徑不是子模塊。

path/to/innerRepository可能被記錄在索引中的父回購爲special entry (mode 160000)

嘗試

git submodule deinit path/to/innerRepository 

(如果你沒有.gitmodules應該失敗)

和:

git rm --cached path/to/innerRepository # no trailing slash 

最後一個命令應該是m讓您的父母回購「忘記」該子模塊。

+0

在我問這裏之前,我在別的地方讀過關於'deinit'的信息;對不起,我沒有提到。您提出的'deinit'行會導致一個錯誤:'error:pathspec'deinit'與git已知的任何文件都不匹配.'看起來我的git版本(1.7.9.5)太老了,無法知道該命令? – Alfe

+0

@Alfe是的,升級會很好。但是如果你沒有'.gitmodules'文件,不要忘了這個命令*會*失敗。最重要的命令是'git rm --cached':這是一個在這裏變傻的人。 – VonC

+0

那個'git rm'會不會刪除任何文件?由於他們不是「知道」的混帳,我認爲它不會刪除文件,對吧? – Alfe