You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

git rm *.txt与git rm \*.txt的区别是什么?多次尝试后看似等价

git rm *.txt 和 git rm \*.txt 的区别

核心差异在于谁来处理通配符*——是你的shell(比如bash、zsh),还是Git本身:

  • git rm *.txt:shell会先解析*.txt,在当前工作目录下找出所有以.txt结尾的文件,把通配符替换成这些文件的具体名称,再传给Git执行。比如当前目录有a.txt、b.txt,实际执行的是git rm a.txt b.txt。

    • 这个方式只会匹配当前目录下的txt文件,子目录里的不会被shell识别到。
    • 如果当前目录没有任何txt文件,多数shell会直接报错“没有匹配的文件”,不会把参数传给Git。
  • git rm \*.txt:反斜杠\转义了星号,shell不会处理通配符,直接把*.txt作为参数传给Git。此时由Git自己解析通配符,它会在所有被Git跟踪的文件里匹配以.txt结尾的文件,包括子目录中的文件。

    • 比如你有sub/c.txt且被Git跟踪,这个命令会直接删除它,而git rm *.txt做不到。
    • 即使当前目录没有txt文件,只要仓库里有其他地方的跟踪txt文件,Git会找到并删除它们。

你觉得两者等价,大概率是因为你的场景里:所有被Git跟踪的txt文件都在当前目录,没有子目录里的匹配文件,所以两种方式最终删除的文件列表一致。

内容的提问来源于stack exchange,提问作者Nader Abd Alhamed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 12:17:45