Git新手问题:如何移除git status输出行首??标记,编写脚本列仓库忽略文件
Git 提取状态输出文件名(去除前缀标记)解决方案
前置规则说明
你当前的命令存在筛选规则偏差:
git status -s短输出格式中,??前缀代表未跟踪且未被忽略的文件,!!前缀才是你要找的被.gitignore规则匹配到的忽略文件- 你使用的
grep '??*'匹配逻辑不严谨,建议加行首定位符避免误匹配
可用实现方案
方案1:基于你现有git status命令改造
如果要保留git status的实现方式,用awk直接提取第二个字段即可去除前缀标记:
场景1:提取被忽略的文件(符合你的练习需求)
git status -s --ignored=traditional | grep '^!!' | awk '{print $2}'
场景2:提取你当前输出的未跟踪文件(去掉??前缀)
git status -s --ignored=traditional | grep '^??' | awk '{print $2}'
方案2:更适合脚本使用的原生Git命令(无需额外处理前缀)
Git本身提供了专门列举忽略文件的命令,输出内容直接是纯文件名,没有任何状态前缀,稳定性更高:
git ls-files --others --ignored --exclude-standard
内容的提问来源于stack exchange,提问作者beaconsrlit
相关产品推荐
相关产品推荐

