2011-06-07 66 views
7

我有一個git回購我一直在使用去年在同一個盒子。今天我跑git status並且得到錯誤信息:Git回購錯誤消息,它不是一個回購...但它是

fatal: Not a git repository (or any parent up to mount parent /home) 
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set). 

我有一個.git目錄和它填充了次提交我爲回購。我不想重新初始化回購,因爲它擔心它會覆蓋歷史。我也不想真的想從github中重新獲得它,因爲我在一段時間內在分支中存儲了一些變化,而這些變化在一段時間裏還沒有推到GH上。

編輯:

我有理由相信這不是我的環境。其他git回購工作正常工作

+1

如何做一個'git克隆'進入臨時目錄並手動合併隱藏的更改? – 2011-06-07 17:52:25

+0

如果你'cd .git'並做'git log',它會說什麼? – karmakaze 2011-06-07 17:59:50

+0

@karmakaze我得到了同樣的錯誤信息 @Fredrick謝謝你的建議。我想看看在我跳入手動複製 – brycemcd 2011-06-07 18:04:32

回答

6

我想後從混帳的適當的源文件中的一些註釋:

的Git回購發現是按照如下進行:

/* 
* Test in the following order (relative to the cwd): 
* - .git (file containing "gitdir: <path>") 
* - .git/ 
* - ./ (bare) 
* - ../.git 
* - ../.git/ 
* - ../ (bare) 
* - ../../.git/ 
* etc. 
*/ 

它查明,這是由於以下混帳回購協議:

/* 
* Test if it looks like we're at a git directory. 
* We want to see: 
* 
* - either an objects/ directory _or_ the proper 
* GIT_OBJECT_DIRECTORY environment variable 
* - a refs/ directory 
* - either a HEAD symlink or a HEAD file that is formatted as 
* a proper "ref:", or a regular file HEAD that has a properly 
* formatted sha1 object name. 
*/ 

看看您的.git有什麼問題。這與@Chris Nicola的答案HEAD小寫等有關。

+0

好的調用。看起來像我的對象目錄已損壞...... /嘆氣。謝謝@manojilds。 – brycemcd 2011-06-07 23:17:20

0

無論如何克隆到另一個目錄。您可以將對象從原始倉庫中的.git目錄中複製,並將倉儲複製到新倉庫中的.git文件夾中。跳過任何將被覆蓋的文件。你應該能夠複製隱藏指針和gitk - 所有應該告訴你他們。

2

很難說確切的原因,但你的.git必須以某種方式被破壞。有一篇博客文章here,有人在他的系統中將他的HEAD文件重命名爲全部小寫,這對他造成了這個問題。不要說這是你的特殊問題,但你可能要仔細看看.git文件夾。

您可以嘗試從github簽出一個新文件夾,然後比較兩個.git文件夾的差異。

+1

如果事實證明這不是OP的問題,我強烈建議您創建一個新問題,然後以此作爲回答。這應該足夠高,以便任何搜索Git問題的人都可以找到它。非常有用的信息。 – 2011-06-07 18:22:32

+0

我會認爲,從來沒有發生過這種事情,但我可以看到它是一個很好的Windows故障排除步驟,儘管沒有太多人使用FAT/VFAT系統,所以我不知道實際發生的頻率如何。 – 2011-06-07 21:06:47

+0

今天我有一個類似的問題,在我的情況下,我將存儲庫備份到外部NTFS驅動器,而根本不復制到.git/refs/heads/master的符號鏈接的HEAD文件。 'ln -s .git/refs/heads/master .git/HEAD'固定存儲庫... – l4mpi 2013-02-05 09:24:18

0

另一種可能性可能是您的git文件的權限已損壞。檢查以確保您擁有讀取權限。

當我的權限混入到計算機中時,我遇到了類似的問題。

-1

檢查您是否從正確的目錄提供此命令。我遇到了同樣的錯誤。然後我到了.git所在的目錄併發出command.Its工作正常。