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

vnjpjtjt  于 2023-10-23  发布在  Shell
关注(0)|答案(5)|浏览(130)

我想使用shell命令从git中未跟踪的文件中删除一个特定的文件。但正如我所寻找的,只有一个解决方案,

-f - force, 
-d - directories too, 
-x - remove ignored files too.

让我们考虑像gitignore.gitignore这样的文件,每当我尝试命令git rm gitignore.gitignore时,Am都会失败。会欣赏任何预期的结果

ki1q1bka

ki1q1bka1#

如果文件没有被git跟踪,那么git的工作就不是删除它。只需要使用普通的shell命令,比如rm而不是git rm
如果你想删除所有未跟踪的文件,你可以执行git clean

2ledvvac

2ledvvac2#

可能只需要一个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 -- .

rks48beu

rks48beu3#

您可以通过以下方式使用带有标志-i的交互模式

git clean -id

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

beq87vna

beq87vna4#

如果你的工作树中有任何文件,你想删除它,你可以使用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

snvhrwxg

snvhrwxg5#

这是正确答案:

git restore <file>

相关问题