2011-03-19 72 views
45

我做了一個新的倉庫,並運行git add -A。然後我注意到有一個文件夾包含大約100個不應該包含的文件,所以我將它添加到.gitignore如何從暫存區域刪除目錄子樹?

我現在如何清除臨時區域,以便我可以add我的所有文件再次考慮到更新的.gitignore

+0

如果你沒有做你的第一個承諾但是,吹走.git文件夾。使用正確的內容創建.gitignore文件。重來。 git init,stage,commit。 – Gishu 2013-03-27 07:51:36

回答

95

在#git,你說你無意中補充說,應該被忽略的一個目錄,所以運行

git rm --cached -r directory-name 

遞歸刪除根的樹在directory-name從索引。

別忘了更新.gitignore

+1

'-r .'會更簡單,做同樣的事情嗎? – 2012-09-16 19:32:10

+2

你能提一下爲什麼--cached是必要的嗎?我不明白爲什麼它是 – 2015-05-30 01:06:29

+3

@AlexMills問題指定了一個目錄,該目錄已使用'git add'添加到暫存區域,也稱爲緩存或索引。根據'--cached'上的['git rm'文檔](https://git-scm.com/docs/git-rm):「使用此選項可以取消僅從索引中刪除路徑的操作。工作樹文件,無論是否修改,都將被保留。「 – 2015-11-10 01:42:40

26

你可以使用命令:

git reset 
+2

'致命的:無法解決'HEAD'作爲一個有效的ref.'我認爲沒有什麼可以重置*爲*呢? – Acorn 2011-03-19 03:29:20

+0

@Acorn,對。我沒有意識到你還沒有承諾全新的回購。 – 2011-03-19 03:48:28

+5

在這種情況下,我只是'rm -rf .git && git init .'並重新開始。 – 2011-03-19 03:51:49

3

一定要記住把s--global core.excludesfile .gitignore.txt

excludesfile VS excludefile

也許這將節省別人我失去了小時...