リポジトリにたくさんのコミットがあります。SHA1からSHA2への 2 つのコミット間で変更されたファイルのリストを確認したい。
どのコマンドを使用すればよいですか?
git diff --name-only SHA1 SHA2
ここでは、コミットを識別するのに十分な SHA ハッシュを含めるだけで済みます。たとえば、次のこともできます
git diff --name-only HEAD~10 HEAD~5
10 番目の最新のコミットと 5 番目の最新のコミット (またはその程度) の違いを確認します。
git diff --name-status [SHA1 [SHA2]]
--name-only に似ていますが、ファイルに何が起こったか (変更、削除、追加...) を示す単純なプレフィックスを取得する点が異なります。
git log --name-status --oneline [SHA1..SHA2]
は似ていますが、コミットメッセージの後にコミットがリストされているため、ファイルがいつ変更されたかを確認できます。
-- <filename> [<filename>...]
特定のファイル/フォルダーに何が起こったのかだけに興味がある場合は、バージョンに追加できますgit log
。
単一のコミットで何が起こったのかを確認したい場合は、それを SHA1 と呼び、次のようにします
git log --name-status --oneline [SHA1^..SHA1]
ファイル ステータス フラグ:
国旗 | 名前 | 意味 |
---|---|---|
M |
変更された | ファイルが変更されました |
C |
コピー編集 | ファイルがコピーされ、変更されました |
R |
名前変更編集 | ファイルの名前が変更され、変更されました |
A |
追加した | ファイルが追加されました |
D |
削除された | ファイルが削除されました |
U |
マージされていない | マージ後にファイルに競合があります |
ただし、ブランチとその共通の祖先と別のブランチ (origin/master など) の間で変更されたファイルを確認するには:
git diff --name-only `git merge-base origin/master HEAD`
2 つのブランチ間で変更されたファイルを表示する場合は、@artfulrobot の回答を補足します。
git diff --name-status mybranch..myotherbranch
優先順位に注意してください。新しいブランチを最初に配置すると、ファイルが追加ではなく削除されたように表示されます。
a を追加すると、grep
さらに絞り込むことができます。
git diff --name-status mybranch..myotherbranch | grep "A\t"
で追加されたファイルのみが表示されmyotherbranch
ます。
また、最後のコミットとその前のコミットの間で変更されたファイルを表示したいだけの場合は、これでうまくいきます。
git show --name-only
これにより、ファイルの変更が表示されます。
git diff --word-diff SHA1 SHA2
以前のすべての回答の最大の問題は、リポジトリから取得しようとしている情報を使用したい場合に非常に迷惑なページャーにフィードされることです。特に、vim コマンドを学習する代わりに、開発するはずのアプリケーションのビジネス ロジックを学習したい開発者の場合はなおさらです。
--no-pager を使用すると、その問題が解決します。
git --no-pager diff --name-only sha1 sha2
これに基づいて、2 つのパス間で変更された内容の階層ツリー ビューをレンダリングする git-diffview Git 拡張機能をgit diff --name-status
作成しました。