2014-06-25 170 views
40

在我的項目的根目錄中有一個foo文件夾。在foo文件夾中,我有一個bar文件夾。我想忽略我的bar文件夾中所有文件的所有更改。我有這個在我的gitignoregitignore不會忽略文件夾

/foo/bar 

文件夾被檢查:它的存在和它的文件被忽略。 gitignorecommit特德。但是,我有一個文件,我在這裏進行了修改,並位於我的bar文件夾中。當我輸入

git status 

我的git bash我看到應該被忽略的文件。可能是什麼原因,我怎樣才能成功地忽略我的酒吧文件夾內的所有文件?

請注意,這些文件先前被同一行忽略,但我不得不暫時刪除該行,以便commit服務器上的某些內容。在commit之後,我把這條線放回gitignore。這是前一陣子,但現在我已經觀察到這些文件將在git status。我希望能夠修改忽略的文件,而不會出現在git status中。

+0

將來,您不需要修改忽略添加忽略的內容。 'git add -f ignored-file'會添加一個文件,即使它在你的忽略中。 – Chris

+0

'git status foo/bar/file-that-should-be-ignored'給出了什麼? – Chris

+0

如果發生任何更改,應該忽略的文件。我明顯錯過了一些東西,但根據我的知識,在這種情況下,git狀態列表應該是空的,前提是/ goo/bar存在於.gitignore –

回答

96

我猜這個文件夾已被檢入git之前?嘗試運行git rm --cached <folder>並再次檢查。

編輯:代碼中有一個小錯誤。解決方案是: git rm -r --cached <folder> 但是,這個答案已經讓我找到了解決方案,所以我會接受它。

更新:需要-r

+0

這將從(當前版本的)回購庫中完全刪除該文件夾。 OP希望該文件夾在那裏,但不應跟蹤新的更改 – Gareth

+0

不幸的是,我必須刪除接受。此解決方案在推送時刪除了遠程版本的文件。我想設置gitignore忽略文件夾的所有文件,而不是從遠程刪除它。那可能嗎?我已經恢復瞭解決方案。 –

+0

我想讓遠程服務器保留其文件版本 –

1

對我而言,接受的答案是解決方案的一部分,而不是整個解決方案。也許,我即將發佈的其他步驟顯而易見,但我首先想到了它們。這是我走上確保我.gitignore文件的步驟忽略我希望它忽略的文件夾:

  1. 承諾,你需要修復/更改任何變化。
  2. 運行以下命令:git rm -r --cached .(從git的指數,以消除一切刷新你的git倉庫)
  3. 然後運行這個命令:git add .(加回一切回購)
  4. 最後,將這些改動提交使用git commit -m ".gitignore Fixed"

你可以找到的鏈接從那裏我找到了解決辦法here文章。

+0

這不是基於原始問題的可行解決方案。 @ lagos-arpad專門詢問了一個子目錄,而不是整個項目。您的解決方案從git存儲庫的根級別刪除所有內容,這不是處理此問題的推薦方法。 – justinhartman

+0

即使它只是一個子目錄,這個解決方案也適用於我,因爲我只處理一個文件。你能否詳細說明爲什麼不推薦? – sikanderBabwani