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

如何使用Glob丢弃多个文件的Git未暂存变更?

嘿,这个问题我太熟了!要在Git里用Glob模式批量丢弃未暂存变更,其实用新版推荐的git restore(Git 2.23及以上版本支持)或者传统的git checkout --都能轻松搞定,下面分几种常见场景给你拆解:

一、丢弃指定文件夹内所有未暂存变更

如果你想丢弃folder1文件夹里所有文件的未暂存变更,直接用下面的命令就行:

git restore folder1/

要是你用的是比较旧的Git版本(低于2.23),可以用传统写法:

git checkout -- folder1/

👉 注意末尾的斜杠/很关键,它能明确告诉Git你要操作的是文件夹,避免和同名文件混淆。

二、匹配文件名规则(比如filename*)丢弃变更

如果要批量处理符合命名规则的文件(比如所有以filename开头的文件),一定要记得用单引号把Glob模式包起来,防止shell提前解析通配符:

git restore 'filename*'

旧版Git对应的命令是:

git checkout -- 'filename*'

👉 为什么要加单引号?举个例子:如果当前目录有filename1.txt和子目录里的filename2.md,不加单引号的话,shell只会把当前目录的filename1.txt传给Git,而单引号能让Git自己处理Glob模式,递归匹配所有符合规则的文件。

三、更灵活的Glob模式示例

除了上面的场景,你还可以用更复杂的Glob规则实现精准匹配:

  • 丢弃所有.js后缀的文件:git restore '*.js'
  • 丢弃subfolder目录下所有.md文件:git restore 'subfolder/*.md'
  • 递归匹配所有子目录里的.log文件:git restore '**/*.log'(**表示任意层级的子目录)
重要提醒
  • 这些命令只对未暂存的变更有效,如果文件已经被git add到暂存区,得先执行git reset HEAD <文件/路径>把变更移出暂存区,再用上面的命令丢弃。
  • 不确定命令会影响哪些文件?可以加--dry-run参数预览效果,比如:
    git restore --dry-run 'filename*'
    
    这个命令只会列出要处理的文件,不会真的丢弃变更,放心试!

内容的提问来源于stack exchange,提问作者Avery235

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:52:00