如何同时获取暂存区和未暂存区的文件列表(包括新增和修改文件)?-灵析社区

型男不是我还是谁

功能说明: 1.获取修改文件列表(不包括删除文件); 2.获取新增文件列表; 3.文件是否在暂存空间,都能获取到文件列表(暂存空间文件和未暂存空间文件重复去重)。 * * * 1.获取未暂存文件列表(不包括删除文件): comm -3 <(git ls-files --exclude-standard --deleted | sort) <(git ls-files --exclude-standard --others --modified | sort) | sed -e 's/^[[:space:]]*//' 2.获取暂存文件列表: git diff --name-only --cached --diff-filter=d 3.获取暂存空间和未暂存空间文件列表并过滤重复项: comm -3 <(git diff --name-only --cached --diff-filter=d | sort) <(comm -3 <(git ls-files --exclude-standard --deleted | sort) <(git ls-files --exclude-standard --others --modified | sort) | sed -e 's/^[[:space:]]*//') | sed -e 's/^[[:space:]]*//' * * * 相关资料说明: `git ls-files` 命令(获取未暂存文件列表): git ls-files --exclude-standard --others // 获取新增文件列表 git ls-files --exclude-standard --modified // 获取修改文件列表 git ls-files --exclude-standard --deleted // 获取删除文件列表 `git diff` 命令(获取暂存文件列表): git diff --name-only --cached // 获取暂存区所有文件 git diff --name-only --cached --diff-filter=A // 获取新增文件 git diff --name-only --cached --diff-filter=D // 获取删除文件 git diff --name-only --cached --diff-filter=M // 获取修改文件 git diff --name-only --cached --diff-filter=d // 排除删除文件 `--diff-filter` 参数: A:新增文件 D:已删除文件 M:修改过文件 小写字母取反; * * * `comm` 命令(取列表差集): comm [-123][--help][--version][第1个文件][第2个文件] 参数: -1 不显示只在第1个文件里出现过的列 -2 不显示只在第2个文件里出现过的列 -3 不显示只在第1和第2个文件里出现过的列 `sed -e 's/^[[:space:]]*//'` 清除输出的文件前面的空格 感谢大家的帮助。

阅读量:1

点赞量:0

问AI