过去很久以前就有很大的提交,从那以后发生了很多变化。如何列出到目前为止尚未更改该提交的所有文件?
答案 0 :(得分:1)
您可以使用以下命令链:
git ls-files | grep -v "$(git diff --name-only <from-commit> <to-commit>)"
git ls-files
列出所有受版本控制的文件,而git diff --name-only <from-commit> <to-commit>
将列出在指定的提交范围内更改的文件。
grep -v
返回所有不匹配给定模式的行(反向匹配)。
希望有所帮助!
如果您遇到Argument list too long
错误,则可以使用以下shell脚本:
#!/bin/bash
git diff --name-only $1 $2 | {
files="$(git ls-files)"
while read line
do
files=$(echo "$files" | grep -v $line)
done
echo "$files"
}
此脚本将从所有文件列表中排除每次迭代的一个文件路径,因此您永远不会遇到Argument list too long
错误。
您可以通过将脚本保存到文件中并使用提交范围的提交哈希值来执行该脚本,该提交范围的文件应从结果中排除。