2016-12-16 80 views
1

我把一些文件夾在我的gitignore但在documentation的Git忽略和untrack文件[是的,我已經readed其他職位]

描述的gitignore文件指定的Git應該忽略故意未跟蹤文件。已經通過的Git跟蹤的文件不受影響

所以我要untrack一些文件,是我的噩夢開始

這是我gitignore文件

$ cat .gitignore 
/.settings/ 
/.buildpath 
/configuration.php 
/administrator/cache/* 
/images/* 
/connectionOracle.php 
/administrator/components/com_jsecure/* 
/administrator/language/en-GB/* 

在這個文件中最後修改是添加的行/ images/*

爲了解開這個文件夾,我按照{1} here和{2}

繼{1}

$ git update-index --assume-unchanged images/* 
fatal: Unable to mark file images/02102012_planos.jpg 

問題1:爲什麼不能untrack這個特定的文件?

繼{2}

$ git rm --cached images/ -r 
fatal: pathspec 'images' did not match any files 

與特定的文件同樣的結果

$ git rm --cached images/20130626tabela1.jpg 
fatal: pathspec 'images/20130626tabela1.jpg' did not match any files 

問題2:爲什麼我收到此錯誤信息?在這裏搜索導致我到this,但正如我所說的,這些文件在/ images /下被跟蹤。

與塊狀櫻桃

要驗證忽略的文件列表中我跑這個命令

$git ls-files --others -i --exclude-standard 

這給我一個很長的圖像,管理員和mpdf61文件夾中的文件列表。 mpdf61文件夾沒有在gitignore文件中配置,也沒有在info/exclude中配置。

Question 3: Why the mpdf61 appears in this list? 
+0

你可以顯示'git status'的結果嗎? –

回答

2

注意:「跟蹤」的意思是「在索引中」。 「未跟蹤」意味着「不在索引中」。未被跟蹤的文件的顯示通常會被忽略,所以有些人傾向於調用狀態爲「既未被跟蹤又被忽略」的文件,只是「被忽略」,靜靜地掩蓋了它們的「未被跟蹤」的性質。請注意,索引不需要與當前的HEAD提交匹配:通過更改索引,您可以準備提交下一個。只有在您進行提交後,這些更改纔會成爲永久提交的一部分,並且提交更新的行爲也會更新HEAD


$ git update-index --assume-unchanged images/* 
fatal: Unable to mark file images/02102012_planos.jpg 

問題1:爲什麼不能untrack這個特定的文件?

您不能追蹤它,因爲它沒有被跟蹤。此外,git update-index --assume-unchanged不首先解壓文件。對於update-index更新「假定不變」位,該文件必須位於索引中,以便update-index有更新內容。這個fatal錯誤發生在第一個這樣的未跟蹤(不在索引中)的文件中。由於shell的擴展*命名的任何後續文件都沒有發生任何事情,因爲update-index剛剛在第一個錯誤之後停止。

(例如,如果你運行git update-index --assume-unchanged red.txt blue.jpg green.svg,都red.txtgreen.svg在索引中blue.jpg在索引中,update-index將標誌着red.txt索引條目,但不是一個green.svg。)


$ git rm --cached images/20130626tabela1.jpg 
fatal: pathspec 'images/20130626tabela1.jpg' did not match any files 

問題2:爲什麼我收到此埃羅r消息?

因爲該文件也未被跟蹤(不在索引中),因此無法從索引中刪除。這:

$ git rm --cached images/ -r 
fatal: pathspec 'images' did not match any files 

意味着沒有images/文件(現在)在索引中。 (也許有些人之前,因此都在HEAD提交,但不再是,經過早期的成功git rm --cached;如果是這樣,就應該在git status顯示爲「已刪除」)


$ git ls-files --others -i --exclude-standard 

這給了我一個很長的文件列表中的圖像,管理員和mpdf61文件夾。 mpdf61文件夾沒有在gitignore文件中配置,也沒有在info/exclude中配置。

問題3:爲什麼mpdf61出現在這個列表中?

推測是因爲那些文件被忽略。有三個 「標準」 排除文件類,如圖所示git ls-files文檔中:

--exclude-standard
           添加標準的Git排除:git的/信息/排除,在每個的.gitignore 目錄,用戶的全局排除文件

(全部強調我的)。你說的是「the」(如在一個)gitignore文件,但可能有很多,包括目錄mpdf61本身,並且你可能配置了core.excludesFile

要查找哪個忽略指令忽略特定文件,請使用git check-ignore -v。見the git check-ignore documentation