2011-11-20 200 views
91

我正在研究一個分支,說我從主分支分支出來的「實驗性」分支。然後,我在實驗分支中生成一個用戶模型,但並未將它們添加到索引中。如何在Git中刪除未跟蹤的文件?

如果我想放棄最近在實驗分支中添加的文件的所有更改,我該怎麼辦?未跟蹤文件如下表所示:

$ git status 
On branch new_chick 
Untracked files: 
    (use "git add <file>..." to include in what will be committed) 

     .project 
     app/models/user.rb 
     db/migrate/ 
     test/fixtures/users.yml 
     test/unit/user_test.rb 

我試圖運行「混帳的復位 - 硬」,在希望撤消所有這些變化,但所有的文件上面仍然顯示。

任何人都請對我說點什麼?

+1

可能重複[如何從當前的Git工作樹中刪除本地(未跟蹤)的文件?](https://stackoverflow.com/questions/61212/how-to -remove-local-untracked-files-from-the-current-git-working-tree) – g00glen00b

回答

183

要刪除未跟蹤的文件/目錄做:

git clean -fdx 

-f - 力

-d - 目錄太

-x - 刪除或忽略的文件太(不要使用,如果這你不想刪除被忽略的文件)

+40

添加-n預覽第一個,這樣你就不會意外刪除東西 – Druska

+6

這太棒了!除此之外,它還將刪除您可能在.gitignore中故意忽略的配置文件,但仍需要用於本地開發環境。您可以使用相同的命令與-i的交互模式,如:git clean -fdxi,它會提示您輸入要刪除的文件。 – moeabdol

+1

這個命令可以刪除想要的文件 – thedanotto

14

這些是未跟蹤的文件。這意味着git沒有跟蹤它們。它只是列出它們,因爲它們不在git忽略文件中。由於它們沒有被git跟蹤,因此git reset不會觸及它們。

如果你想吹走所有未跟蹤的文件,最簡單的方法是git clean -f(使用git clean -n而不是實際刪除任何東西時,如果你想看看它會破壞什麼)。否則,你可以直接刪除你不需要的文件。

11

用戶交互方式:

git clean -i -fd 

Remove .classpath [y/N]? N 
Remove .gitignore [y/N]? N 
Remove .project [y/N]? N 
Remove .settings/ [y/N]? N 
Remove src/com/amazon/arsdumpgenerator/inspector/ [y/N]? y 
Remove src/com/amazon/arsdumpgenerator/manifest/ [y/N]? y 
Remove src/com/amazon/arsdumpgenerator/s3/ [y/N]? y 
Remove tst/com/amazon/arsdumpgenerator/manifest/ [y/N]? y 
Remove tst/com/amazon/arsdumpgenerator/s3/ [y/N]? y 

-i交互式
-f爲力
-d的目錄
-x被忽略的文件(如果需要添加)

注:添加-n- 繼續運行來檢查它會做什麼。

+1

這是一個更好的答案。 +1代表-i –

0

刪除未跟蹤文件:

git clean -f

刪除未經跟蹤目錄爲好,用途:

git clean -f -d

爲了防止任何心臟驟停,用

git clean -n -f -d

1

您的救援命令是git clean

0

嗯,我有類似的問題。我採取了最新的,但在本地有一些變化,因爲合併沒有發生在一個特定的文件。該文件是未跟蹤,我不想讓他們那麼 我所做的就是 -

$ git的結帳文件路徑/文件名

文件路徑 - 從那裏我做了git的bash的位置。 然後當我採取最新的變化可用

相關問題