2011-11-20 196 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的位置。 然后当我采取最新的变化可用

相关问题