如何在Git中删除未跟踪的文件?

Sar*_*wan 107 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
Run Code Online (Sandbox Code Playgroud)

我试图运行"git reset --hard"以希望撤消所有这些更改,但上面的所有文件仍然显示.

有人请对我说清楚吗?

man*_*lds 213

删除未跟踪的文件/目录:

git clean -fdx
Run Code Online (Sandbox Code Playgroud)

-f - 强制

-d - 目录也是

-x - 删除被忽略的文件(如果您不想删除被忽略的文件,请不要使用此文件)

  • 首先添加-n进行预览,这样就不会意外删除内容 (49认同)
  • 这很棒!除了它还将删除您可能在.gitignore中故意忽略但仍需要本地开发环境的配置文件.您可以使用相同的命令和额外的-i用于交互模式:git clean -fdxi,它将提示您要删除哪些文件. (8认同)
  • 这很好,但是您可能希望向用户添加通知以使用`-x` WITH CAUTION,因为它会永久删除文件.或者使用@Druska提到的`-n` (3认同)
  • 没有使用`-x`仍然是.project和其他配置文件被删除.不得不将repo从最后一次提交再次拉到新目录中. (2认同)
  • 我想你必须通知这个命令有潜在危险,因为它可以删除想要的文件!!! (2认同)

bit*_*007 18

用户互动方式:

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
Run Code Online (Sandbox Code Playgroud)

-i for interactive
-f for force
-d for directory
-x for ignored files(如果需要,添加)

注意: 添加-n--dry-run以检查它将执行的操作.


Lil*_*ard 17

那些是未跟踪的文件.这意味着git没有跟踪它们.它只列出它们,因为它们不在git ignore文件中.由于它们没有被git跟踪,git reset因此不会触及它们.

如果你想要吹走所有未跟踪的文件,最简单的方法是git clean -f(git clean -n如果你想看看它会破坏什么而不实际删除任何东西).否则,您只需删除手动不需要的文件即可.


Tom*_*nko 9

您还可以通过另一种方式返回到本地存储库之前的状态:

  1. 将未跟踪的文件添加到暂存区域git add
  2. 使用 恢复到本地存储库的先前状态git reset --hard


小智 7

删除未跟踪的文件:

git clean -f

要删除未跟踪的目录,请使用:

git clean -f -d

为防止任何心脏骤停,请使用

git clean -n -f -d

  • `-n` == `--dry-run`,`实际上不删除任何内容,只是显示将要执行的操作。` (3认同)