0
過去很久以前就有了一個很大的提交,並且自那之後發生了很多變化。我如何列出那些到目前爲止沒有改變的文件?如何列出自特定GIT提交後不會更改的所有文件
過去很久以前就有了一個很大的提交,並且自那之後發生了很多變化。我如何列出那些到目前爲止沒有改變的文件?如何列出自特定GIT提交後不會更改的所有文件
您可以使用下面的命令鏈:
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
錯誤。
您可以通過將腳本保存到文件中並使用提交範圍的提交散列來執行它,這些提交範圍的文件應該從結果中排除。
謝謝,它適用於小提交,但對於太大的提交,grep會拋出'參數列表太長'。 – jwall
@jwall我用另一種方式編輯帖子來完成同樣的事情。這應該適合你。 –