はるか昔に大きなコミットがあり、それ以来多くの変化が起こりました。今までそのコミットを変更していないすべてのファイルを一覧表示するにはどうすればよいですか?
次のコマンドチェーンを使用できます。
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
エラーに問題がある場合は、次のシェルスクリプトを使用できます。
#!/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"
}
このスクリプトは、すべてのファイルのリストから反復ごとに1つのファイルパスを除外するため、Argument list too long
エラーが発生することはありません。
スクリプトをファイルに保存して使用し、ファイルを結果から除外する必要があるコミット範囲のコミットハッシュを使用してスクリプトを実行できます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加