2362

リポジトリにたくさんのコミットがあります。SHA1からSHA2への 2 つのコミット間で変更されたファイルのリストを確認したい。

どのコマンドを使用すればよいですか?

4

15 に答える 15

3190
git diff --name-only SHA1 SHA2

ここでは、コミットを識別するのに十分な SHA ハッシュを含めるだけで済みます。たとえば、次のこともできます

git diff --name-only HEAD~10 HEAD~5

10 番目の最新のコミットと 5 番目の最新のコミット (またはその程度) の違いを確認します。

于 2009-10-12T01:51:34.630 に答える
511
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 マージされていない マージ後にファイルに競合があります
于 2011-07-26T09:26:18.233 に答える
64

ただし、ブランチとその共通の祖先と別のブランチ (origin/master など) の間で変更されたファイルを確認するには:

git diff --name-only `git merge-base origin/master HEAD`
于 2012-03-20T17:10:23.303 に答える
29

2 つのブランチ間で変更されたファイルを表示する場合は、@artfulrobot の回答を補足します。

git diff --name-status mybranch..myotherbranch

優先順位に注意してください。新しいブランチを最初に配置すると、ファイルが追加ではなく削除されたように表示されます。

a を追加すると、grepさらに絞り込むことができます。

git diff --name-status mybranch..myotherbranch | grep "A\t"

で追加されたファイルのみが表示されmyotherbranchます。

于 2013-10-22T10:42:22.220 に答える
11

また、最後のコミットとその前のコミットの間で変更されたファイルを表示したいだけの場合は、これでうまくいきます。

git show --name-only
于 2015-10-01T20:42:14.800 に答える
8

これにより、ファイルの変更が表示されます。

git diff --word-diff SHA1 SHA2
于 2014-12-04T15:10:40.127 に答える
6

以前のすべての回答の最大の問題は、リポジトリから取得しようとしている情報を使用したい場合に非常に迷惑なページャーにフィードされることです。特に、vim コマンドを学習する代わりに、開発するはずのアプリケーションのビジネス ロジックを学習したい開発者の場合はなおさらです。

--no-pager を使用すると、その問題が解決します。

git --no-pager  diff --name-only sha1 sha2
于 2021-07-04T21:36:49.597 に答える
2

これに基づいて、2 つのパス間で変更された内容の階層ツリー ビューをレンダリングする git-diffview Git 拡張機能をgit diff --name-status作成しました。

于 2015-11-03T09:39:46.843 に答える