如何获取git status输出中未跟踪文件及目录的对应路径?
获取git status未跟踪板块路径的方法
Git默认git status的输出是面向人阅读的,格式可能随版本、配置调整,推荐用Git提供的机器友好输出格式来解析,不会出现匹配异常。
方法1:输出和git status未跟踪板块完全一致的路径(未跟踪目录不展开)
你示例中git status未跟踪板块直接展示未跟踪目录名、未展开内部文件,用以下命令即可直接拿到对应结果:
git status --porcelain | awk '/^?? / {print $2}'
命令说明
git status --porcelain:输出固定格式的状态结果,所有未跟踪路径的行都会以??开头- 后面的awk语句负责过滤未跟踪行,提取第二列的路径内容
在你给出的测试场景中,执行后输出结果为:
untracked-directory/ untracked-file.txt
和git status未跟踪板块列出的路径完全一致。
方法2:展开未跟踪目录,输出所有未跟踪的单个文件路径
如果你需要获取所有未跟踪的单个文件(而非合并显示未跟踪目录),可以使用专门的ls-files命令:
git ls-files --others --exclude-standard
这个命令会自动排除.gitignore规则忽略的文件,只输出实际未被Git跟踪的文件路径,你的测试场景下执行后输出为:
untracked-directory/untracked-file-1-in-untracked-directory.txt untracked-directory/untracked-file-2-in-untracked-directory.txt untracked-file.txt
内容的提问来源于stack exchange,提问作者slartar
相关产品推荐
相关产品推荐

