很久以前有一个大的提交,从那时起发生了很多变化。如何列出到目前为止未更改该提交的所有文件?
问问题
303 次
1 回答
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
错误。
您可以通过将脚本保存到文件中来使用该脚本,并使用应从结果中排除其文件的提交范围的提交哈希执行它。
于 2014-05-19T11:11:53.690 回答