[解決済み] git diff を変更の種類でフィルタリングする
2022-06-19 14:34:54
質問
以下のように
git diff
を変更されたファイルに限定する方法はありますか?
私は2つのコミット間の違いを見たいのですが、一方または他方に存在しないパス(追加/削除)を除外したいです。 次のPerlのワンライナーは、私が欲しいもののほとんどを例示しています。
git diff master.. | perl -lnwe 'print unless /^(new|deleted) file/../^diff/ and not /^diff/'
しかし、これでは
diff --git a/path b/path
の行が残ります。 さらに、パースする必要がなければ、もっとすっきりします (たとえば、ハンクが /^diff/ に一致するものを含んでいる場合も失敗します)。
私が試した別の代替案は
git diff --name-status (args) | perl -lnwe 'print if s/^M\s+//' | xargs git diff (args) --
出力は良くなったが、まだハック的な感じがする。
どのように解決するのですか?
あなたが探しているのは
--diff-filter=M
でファイル * を表示します。
M
*2つのブランチの間で変更されたファイルのみを表示します。
から
man git-diff
--diff-filter=[ACDMRTUXB*]
のファイルのみを選択します。
-
A
追加 -
C
コピー -
D
削除 -
M
変更 -
R
名前変更 -
T
タイプ(モード)が変更される -
U
アンマージド -
X
不明 -
B
ペアリングが壊れている -
*
オールオアナッシング
フィルター文字の組み合わせは自由です。
組み合わせに * (All-or-none) が追加された場合、すべてのパスが選択されます。 比較の他の条件に一致するファイルがある場合は、すべてのパスが選択されます。 他の条件に一致するファイルがない場合は、何も選択されません。 が選択されます。
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] コミット前に 'git add' を取り消すにはどうすればよいですか?
-
[解決済み] リモートのGitブランチをチェックアウトするには?
-
[解決済み] Git リポジトリを以前のコミットに戻すにはどうすればよいですか?
-
[解決済み] 現在のGit作業ツリーからローカル(未追跡)ファイルを削除する方法
-
[解決済み] リモート Git リポジトリの URI (URL) を変更するには?
-
[解決済み】"git pull" でローカルファイルを強制的に上書きするには?
-
[解決済み】ローカルのGitブランチの名前を変更するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】現在のブランチの先端がリモートブランチより遅れているため、更新が拒否されました。
-
[解決済み】git-mergeの-dry-runオプションはありますか?
-
[解決済み】なぜ「git commit」は私の変更を保存しないのですか?
-
[解決済み】Githubエンタープライズ - リモート。Git の操作でパスワード認証が利用できない
-
git revert 複数コミット
-
[解決済み] git: fatal: リモートリポジトリから読み取れませんでした。
-
[解決済み] TortoiseGitで「git did not exit cleanly (exit code 128)」というエラーを解決するには?[クローズド]
-
[解決済み] SourceTree error:1407742E:SSLルーチン:SSL23_GET_SERVER_HELLO:tlsv1警告プロトコルバージョン
-
[解決済み] git status に fatal: bad object HEAD と表示される。
-
[解決済み] git-diff と git log が新規ファイルや削除されたファイルを無視するようにするにはどうしたらいいですか?