2012-05-25 46 views
12

我有一個克隆回購。有一個目錄,稱爲/ b/c,曾經是它自己的回購,即有一個/ b/c/.git /等。git忽略一個目錄,這就像它不存在

現在我想在主要回購管理的文件。我不關心a/b/c中的歷史記錄,所以我刪除了/ g/d中的.git dir

但問題是git status完全忽略了/ b/c。我不能git add它。就好像我將路徑放入.gitignore(我沒有)。

很明顯,之前,git忽略了一個帶有.git目錄的子目錄是有意義的,但現在它是如何知道它的差異呢?

除了.gitignore和.git/info/excludes之外,還有其他地方忽略文件嗎? .git/config文件中沒有任何內容?

我被問到什麼git狀態說。不多:

/path/to/root/dir $ git status 
# On branch fred 
nothing to commit (working directory clean) 

什麼git add說。更少(無)

/path/to/root/dir $ git add a/b/c 
+0

你檢查的.gitignore文件中的一級目錄? – jonathanbell

+0

是的,它有它什麼,將匹配的路徑。 – artfulrobot

+0

什麼消息你得到'git add'嗎?'git status'顯示的是什麼? –

回答

17

我不知道問題是什麼,或者它是如何產生的,但這裏是我是如何解決它,如果任何人被卡住:

git rm --cached a/b/c 
git commit -m "removed phantom a/b/c dir" 
git add a/b/c 
git commit -m "finally able to add a/b/c" 

有趣git log a/b/c只列出「終於可以......」提交。 git show HEAD^(以下簡稱「去除幻影......」承諾說

-Subproject commit c311ccdc91c8be66019aa138d1c4af49a6b7a81c 

因此,它看起來就像是專門處理它的一些知識。我將有更多的閱讀了關於子項目和/或子模塊。

+0

聲音就像索引中的東西一樣,獨立於超級項目中缺少的.gitmodules文件,它認爲該目錄是一個已跟蹤的子模塊。發現原因很有用。 –

+0

同意!對我來說很神祕。 – artfulrobot

+0

檢查上部回購中的.gitmodules。該文件應列出所有回購認爲它具有的子模塊(包括您刪除的那個;-) –

2

您是否擁有全球gitignore文件? (訴煩人)(與git config core.excludesfile檢查)

+1

nope。該命令不返回任何輸出。 – artfulrobot

0

使用git add -f強制git的補充它目前忽略的文件。