3231

無関係な情報なしで、ハッシュ (SHA-1) によって与えられたコミットの一部であったすべてのファイルの適切にフォーマットされたリストを提供する単純な Git コマンドを探しています。

私が試してみました:

git show a303aa90779efdd2f6b9d90693e2cbbbe4613c1d

ファイルを一覧表示しますが、それぞれの不要な diff 情報も含まれています。

出力gitからの解析を回避できるように、必要なリストだけを提供する別のコマンドはありますか?git show

4

28 に答える 28

4361

推奨される方法(配管コマンドであるため、プログラムによるものであるため):

$ git diff-tree --no-commit-id --name-only -r bd61ad98
index.html
javascript/application.js
javascript/ie6.js

別の方法(磁器のコマンドであるため、スクリプトにはあまり好まれません。ユーザー向けであることを意図しています)

$ git show --pretty="" --name-only bd61ad98    
index.html
javascript/application.js
javascript/ie6.js

  • --no-commit-id、コミット ID の出力を抑制します。
  • 引数は--pretty、最初のくだらないことを避けるために、空のフォーマット文字列を指定します。
  • 引数には、--name-only影響を受けたファイル名のみが表示されます (Thanks Hank)。--name-status各ファイルに何が起こったのかを確認したい場合は、代わりに使用してください(削除変更、追加)
  • 引数は、-rサブツリーに再帰することです
于 2009-01-08T13:02:22.590 に答える
298

変更されたファイルのリストを取得する場合:

git diff-tree --no-commit-id --name-only -r <commit-ish>

コミット内のすべてのファイルのリストを取得する場合は、次を使用できます。

git ls-tree --name-only -r <commit-ish>
于 2009-01-14T19:22:41.737 に答える
267

gitkこれは望ましくないと思います。その場合は、 を試してくださいgit show --name-only <sha>

于 2009-01-08T12:34:49.527 に答える
241

私は個人的に、showコマンドで--stat--onelineを組み合わせて使用​​しています。

git show --stat --oneline HEAD
git show --stat --oneline b24f5fb
git show --stat --oneline HEAD^^..HEAD

追加/削除統計が気に入らない/必要ない場合は、--stat--name-onlyに置き換えることができます

git show --name-only --oneline HEAD
git show --name-only --oneline b24f5fb
git show --name-only --oneline HEAD^^..HEAD
于 2012-07-11T23:21:49.803 に答える
112

あなたもできる

git log --name-only

また、さまざまなコミット、コミット メッセージ、および変更されたファイルを参照できます。

q と入力して、プロンプトを元に戻します。

于 2014-05-27T01:20:34.363 に答える
74

最近、2 つのコミット間で変更されたすべてのファイルを一覧表示する必要がありました。だから私はこの(これも* nix固有の)コマンドを使用しました

git show --pretty="format:" --name-only START_COMMIT..END_COMMIT | sort | uniq

またはイーサンが指摘するように

git diff --name-only START_COMMIT..END_COMMIT

を使用--name-statusすると、各ファイルの横に変更 (追加、変更、削除など) も含まれます。

git diff --name-status START_COMMIT..END_COMMIT
于 2010-04-26T12:23:55.553 に答える
67

最も単純な形式:

git show --stat (hash)

その方が覚えやすく、必要なすべての情報が得られます。

ファイルの名前だけが本当に必要な場合は、--name-onlyオプションを追加できます。

git show --stat --name-only (hash)

于 2016-07-16T00:06:05.673 に答える
50

私は変更された エイリアスをかなり頻繁に使用します。設定するには:

git config --global alias.changed 'show --pretty="format:" --name-only'

それで:

git changed (lists files modified in last commit)
git changed bAda55 (lists files modified in this commit)
git changed bAda55..ff0021 (lists files modified between those commits)

役に立つかもしれない同様のコマンド:

git log --name-status --oneline (very similar, but shows what actually happened M/C/D)
git show --name-only
于 2013-04-29T13:13:22.017 に答える
46

使用する

git log --name-status

これにより、コミット ID、メッセージ、変更されたファイル、および変更、作成、追加、または削除されたかどうかが表示されます。ややオールインワンのコマンド。

于 2018-05-15T16:42:35.587 に答える
42

標準git diffコマンドの使用(スクリプトにも適しています):

git diff --name-only <sha>^ <sha>

変更されたファイルのステータスも必要な場合:

git diff --name-status <sha>^ <sha>

これは、マージ コミットでうまく機能します。

于 2011-04-29T14:53:08.463 に答える
27
$ git log 88ee8^..88ee8 --name-only --pretty="フォーマット:"
于 2009-01-08T14:11:28.833 に答える
15

これを使用して、2つのチェンジセット間で変更されたファイルのリストを取得します。

git diff --name-status <SHA1> <SHA2> | cut -f2
于 2010-03-28T07:37:53.370 に答える
14

私は使うのが好きです

git show --stat <SHA1>^..<SHA2>
于 2010-11-03T08:12:26.757 に答える
14

最後のコミットで変更されたファイルのリストだけが必要な場合は、単純な 1 行のコマンドを使用します。

git diff HEAD~1 --name-only
于 2013-11-28T15:36:39.463 に答える
11

私はこれが好き:

git diff --name-status <SHA1> <SHA1>^
于 2009-04-22T16:10:22.770 に答える
9

ログを表示します。

COMMIT空白 ("")、SHA-1ハッシュ、または SHA-1 ハッシュの短縮バージョンを指定できます。

git log COMMIT -1 --name-only

これにより、ファイルのみがリストされ、その後の処理に非常に役立ちます。

git log COMMIT -1 --name-only --pretty=format:"" | grep "[^\s]"
于 2011-08-25T12:34:37.220 に答える
8

コミットで変更されたファイルを一覧表示します。

git diff --name-only SHA1^ SHA1

これには、ログ メッセージ、余分な改行、またはその他の混乱は表示されません。これは、現在のコミットだけでなく、どのコミットでも機能します。

于 2012-07-28T00:55:26.270 に答える
6

" git show --stat" (Ryan に感謝) といくつかの sed コマンドを組み合わせることで、データを切り詰めることができます:

git show --stat <SHA1> | sed -n "/ [\w]\*|/p" | sed "s/|.\*$//"

これにより、変更されたファイルのリストのみが生成されます。

于 2009-01-08T13:59:58.653 に答える
4

ファイルリストとして表示する簡単なトリックがあります。:ハッシュの後に追加するだけです:

git show 9d3a52c474:

その後、ドリルインできます。

git show 9d3a52c474:someDir/someOtherDir

ファイルにヒットすると、ファイルの未加工バージョンが取得されます。素敵なリファレンスやコードの重要な部分だけを探している場合は、これが必要な場合があります (diff はすべてを混乱させる可能性があります)。

git show 9d3a52c474:someDir/someOtherDir/somefile

この方法の唯一の欠点は、ファイルのツリーを簡単に表示できないことです。

于 2015-08-26T11:59:32.483 に答える
3
git show HEAD@{0}

私にとってはうまくいきます

于 2012-06-12T09:31:16.580 に答える