2011-03-28 104 views
25

這是一個在流浪漢中的巨大痛苦。我之前有過幾次,我不明白爲什麼。 5分鐘前,回購工作良好,我工作的時候,我移動了一些文件(這是很酷的,所有的都很酷),而Git則用它的褲子。任何想法爲什麼發生這種情況我該如何解決它克隆回購,移動文件等...爲什麼我會得到「致命的:git status - 瓷器失敗」?

回答

35

哦,親愛的,我是這樣的失敗。它看起來像這個問題從Flash Builder複製比其他git的回購成子文件夾梗。答案是刪除所有不是回購協議的.git文件夾。

+0

我不知道我仍然有一些與舊的子模塊相關的.git相關文件 - 在我刪除它們之後,我又回到了黑色。 – electblake 2012-10-11 05:11:14

+0

實際上,可能需要從'vendor'文件夾中移除僅有問題的依賴關係的'.git'文件夾。 在目標repo通過一些重新綁定之後,發生了'@ dev'依賴關係。 – hejdav 2015-06-04 07:08:05

1

我的回購中沒有任何.git文件夾,但隨時將我的新文件複製到我的文件夾中以更新我的應用程序,我仍然收到索引損壞的瓷器失敗錯誤。我不明白如何更新文件會破壞這個或如何解決它。任何人都有進一步的見解呢?

+0

所以你在整個目錄結構中只有一個.git文件夾? – 2011-08-24 16:04:13

+0

我想通了。出於某種原因,我在apps/plugins目錄中的一個蛋糕插件不斷導致此問題中斷。我花了3個小時更換每個文件夾,直到找到一個。我認爲這只是我在某處找到的蹩腳代碼,最近甚至沒有使用它。刪除該文件夾,一切都很完美。謝謝。 – rncrtr 2011-08-31 17:17:21

+0

是否有可能發生這種情況,即使我自己沒有創建任何'cake'插件,全新安裝任何'npm'的CoffeeScript模塊,特別是'grunt'模塊? – trysis 2014-05-25 05:23:17

4

萬一它幫助別人,我只是遇到了同樣的問題,發現在項目根目錄下運行git init修復了它。

3

我遇到了這個錯誤,因爲損壞/未正確初始化的子模塊(使用它自己的.git子文件夾)。我暫時刪除了子模塊文件夾,並在主項目的根目錄中使用了git init。解決了我的問題。

+1

這也是我的原因,但除了刪除子模塊文件夾外,我還必須重新運行'git submodule init && git submodule update'。 – starkos 2017-03-29 12:22:35

2

我有同樣的問題。在我的根項目的目錄中運行git status產生以下錯誤:

fatal: This operation must be run in a work tree 
fatal: 'git status --porcelain' failed in submodule js/object-subscribe 

在受影響的子模塊(js/object-subscribe)運行git status會產生這樣的錯誤:

fatal: This operation must be run in a work tree 

在該子模塊的文件夾中運行git init爲我做。

0

通常,蠢貨,項目的根目錄(git的/)

當你在一個CMS的工作,它可能在安裝模塊/插件攜帶的.git /目錄中的git對元數據創建了一個隱藏目錄具體的模塊/插件

如果你不想使用git的子模塊的功能,最快的解決辦法刪除除根git的元數據目錄下的所有目錄中的.git。 如果這樣做,git將不會將這些模塊視爲項目子模塊。

cd /path/to/your/project/code 
find ./ | grep ".git/index" 

位於刪除一旦「git的」除了根一個所有目錄,但如果你刪除它初始化回購再次

3

我知道這是一個古老的線程,但我有同樣的問題,最終以不同的方式解決。 git init沒有爲我工作。 張貼在這裏,以防其他人有用。

我的存儲庫有兩個子模塊。 墊底之後,我開始收到錯誤致命: - 陶瓷失敗 git的狀態。

解決方案是驗證每個子模塊config文件中的屬性worktree - 例如, <repository-checkout>/.git/modules/<submodule-name>/config

我有一個worktree屬性的無效路徑。它鏈接到已更改併合併到master的未存在文件夾 - 可能是由於解決衝突時出錯。

0

.git是子模塊中的文件,並指向位於根目錄.git目錄中的目錄。

在我的情況下,我在docker中掛載了一個git目錄,並在那裏檢查狀態。這個子模塊的.git文件包含一個在docker中無效的絕對路徑。我編輯了這個.git文件到更改gitdir路徑爲相對路徑

Git版本:2.7.4

0

在我的情況下,使用git mv moduleA moduleB用git 2.12.2移動moduleA/mySubmodulemoduleB/mySubmodule後,我跑進follwoing錯誤:

$ git status 
fatal: Could not chdir to '[../]moduleA/mySubmodule': No such file or directory 
fatal: 'git status --porcelain' failed in submodule mySubmodule 
fatal: 'git status --porcelain' failed in submodule moduleB 

然後我做的follwing(也許在沒有這個順序)

  1. 手動更新.gitmodules進入moduleB
  2. 輸入.git/modules和重命名舊模塊文件夾
  3. 輸入moduleB和刪除文件夾的子模塊
  4. 運行git submodule syncgit submodule update

在那之後,我可能沒有問題再次運行git status

相關問題