Git Shell:我们如何从未跟踪的文件中删除特定文件

时间:2016-07-25 09:53:32

标签: git shell gitignore

我希望使用shell命令从git中删除未跟踪文件中的特定文件。但正如我搜索过的那样只有像

这样的解决方案
-f - force, 
-d - directories too, 
-x - remove ignored files too.

让我们将文件视为 gitignore.gitignore ,每当我尝试使用命令 git rm gitignore.gitignore 时,我都会失败。我希望任何预期的结果。

4 个答案:

答案 0 :(得分:16)

如果git没有跟踪该文件,那么删除它并不是git的工作。只需使用普通的shell命令,例如rm而不是git rm

如果您要删除所有未跟踪文件,可以执行git clean

答案 1 :(得分:3)

可能只需要git clean -df -n就可以方便地检查你先做的事情。

NAME
       git-clean - Remove untracked files from the working tree

OPTIONS
       -d
           Remove untracked directories in addition to untracked files. If an untracked directory is managed by a different Git repository, it is not removed by default. Use -f option twice if
           you really want to remove such a directory.

       -f, --force
           If the Git configuration variable clean.requireForce is not set to false, git clean will refuse to delete files or directories unless given -f, -n or -i. Git will refuse to delete
           directories with .git sub directory or file unless a second -f is given.

       -n, --dry-run
           Don't actually remove anything, just show what would be done.

但是,如果您有未经修改的更改,则需要使用git checkout -- .

答案 2 :(得分:2)

如果您的工作树中有任何文件&要删除它,您将使用git rm

直接从doc

  

git-rm - 从工作树和索引中删除文件

现在为什么要使用git rm代替rm从工作树中删除文件

答案是 - 如果您只使用rm,则需要使用git add <fileRemoved>进行跟进。 git rm只需一步即可完成此操作。

你也可以使用git rm --cached来删除索引中的文件(在下次提交时暂存它以便删除),但是将你的副本保存在本地文件系统中。

这部分取自https://stackoverflow.com/a/7434558

  

要删除未跟踪的文件,您可以使用rm作为源文件中包含的跟踪文件,您将使用git rm

答案 3 :(得分:0)

您可以通过以下方式将交互式模式与标志-i一起使用

git clean -id`

({{1}也适用于目录),然后您可以选择通过按d遍历文件和文件夹,然后选择要删除的内容和不想删除的内容。