Git仅删除当前目录中的文件

时间:2019-07-02 12:43:16

标签: git

我有一个要从git中删除的文本文件目录。但是目录中还有一些文件夹,其中也包含我要保留的文本文件。

如果我运行git rm *.txt,我将摆脱当前目录中的大约一百个文本文件。但是子目录(也有文本文件)也会被删除。

如何仅删除当前目录中的文本文件,但不影响子目录中的文本文件?

好的,我在Windows 10上使用git。我从this directory开始,我有一个子目录looks like this,如果我给git rm ./*.txt命令{{3 }}和该目录中的文本文件一起消失。

我正在使用powershell命令行执行此操作。

3 个答案:

答案 0 :(得分:4)

根据docs,提供目录名称只会删除该目录中的文件。

  • git rm ./*.txt

提供目录名称,需要显式传递-r标志以递归地进入子目录。


更新:OP澄清了该命令正在Windows PowerShell中运行,并且显然以上命令在PowerShell中无法正常工作。应该可以使用Git Bash

答案 1 :(得分:0)

我最近的测试与您的描述相符-尽管有文档,但是如果您给出的路径带有前导目录和通配符文件名,即使没有-r选项,它也会递归匹配。 / p>

我找到了两种解决方法:

一种方法是删除CMD中的文件,然后作为单独的步骤进行删除

del *.txt
git add *.txt

通常可以,但是如果您打算使用git rm --cached,则可能会出现问题。

另一种方法是滥用shell的glob扩展。默认情况下,这种情况发生在bash或类似的shell中,这就是为什么我们很多人从未注意到这种行为的原因。但据我所知,它并不是CMD中的真正选择。

答案 2 :(得分:-1)

您可以使用典型的命令行实用程序,而无需阅读Git文档的页面。在Unix系统上(或在Git Bash / Cygwin中):

cd folder
rm *.txt
git add -u