web-dev-qa-db-ja.com

コミット中の全ファイルを一覧表示するにはどうすればいいですか?

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

私が試してみました:

git show a303aa90779efdd2f6b9d90693e2cbbbe4613c1d

ファイルの一覧が表示されますが、不要な差分情報も含まれています。

git show出力からそれを解析しないようにするために、欲しいリストだけを提供するgitコマンドがありますか。

2447
Philip Fourie

優先方法 配管 コマンドであるため、プログラムによるものになります):

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

もう1つの方法 (スクリプトにはあまり適していません。これは 磁器 コマンドです。ユーザー向けのものです)

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

  • --no-commit-idはコミットIDの出力を抑制します。
  • --pretty引数は、冒頭の曖昧さを避けるために空のフォーマット文字列を指定します。
  • --name-only引数は、影響を受けたファイル名のみを表示します(Thanks Hank)。
  • -r引数はサブツリーに再帰することです
3149
Ryan McGeary

変更されたファイルのリストを入手したい場合は、

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

コミット中の全ファイルのリストを取得したい場合は、

git ls-tree --name-only -r <commit-ish>
201
Jakub Narębski

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

195
Hank Gay

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

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
147
Tuxdude

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

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

更新 :あるいはEthanが指摘しているように

git diff --name-only START_COMMIT..END_COMMIT

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

git diff --name-status START_COMMIT..END_COMMIT
63
lunohodov

またすることができます 

git log --name-only

そして、さまざまなコミット、コミットメッセージ、変更されたファイルを閲覧することができます。

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

62
Indu Devanath

最も簡単な形式: 

git show --stat (hash)

覚えやすく、必要な情報がすべて揃います。 

本当にファイルの名前だけが欲しいなら、--name-onlyオプションを追加することができます。 

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

52
VaTo

私は changed aliasをかなり頻繁に使います。設定するには:

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
46
takeshin

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

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

変更されたファイルのステータスも欲しいなら:

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

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

37
vquintans

つかいます 

git log --name-status

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

26
alpha_989
 $ git log 88ee8 ^ .. 88ee8 --name-only --pretty = "format:" 
24
Pat Notz

OK、 特定のコミットですべてのファイルを表示する方法がいくつかあります。

情報を減らし、 コミットしたファイルの名前 だけを表示するには、単に--name-onlyまたは--name-statusフラグを追加すればいいのです。 ..

したがって、git diffの後に2回のコミットハッシュを使用して、--name-onlyに続けて<sha0> <sha1>を実行できます。

git diff --name-only 5f12f15 kag9f02 

私はまたこれらの状況で通り抜けるためにすべてのステップを示すために下記のイメージを作成します:

git diff --name-only 5f12f15 kag9f02

19
Alireza

私はこれを使って2つのチェンジセット間の修正ファイルのリストを取得します。

git diff --name-status <SHA1> <SHA2> | cut -f2
15
user135507

私は使うのが好きです

git show --stat <SHA1>^..<SHA2>
15
git show --name-only commitCodeHere
13

git whatchangedもあります。これはgit logよりも低レベルです。

NAME
       git-whatchanged - Show logs with difference each commit introduces

その下にあるファイルのリストとそのモード、および追加(A)、削除(D)、または変更(M)がある場合は、コミットの要約を出力します。

$ git whatchanged f31a441398fb7834fde24c5b0c2974182a431363

ようなものを与えるでしょう:

commit f31a441398fb7834fde24c5b0c2974182a431363
Author: xx <[email protected]>
Date:   Tue Sep 29 17:23:22 2015 +0200

    added fb skd and XLForm

:000000 100644 0000000... 90a20d7... A  Pods/Bolts/Bolts/Common/BFCancellationToken.h
:000000 100644 0000000... b5006d0... A  Pods/Bolts/Bolts/Common/BFCancellationToken.m
:000000 100644 0000000... 3e7b711... A  Pods/Bolts/Bolts/Common/BFCancellationTokenRegistration.h
:000000 100644 0000000... 9c8a7ae... A  Pods/Bolts/Bolts/Common/BFCancellationTokenRegistration.m
:000000 100644 0000000... bd6e7a1... A  Pods/Bolts/Bolts/Common/BFCancellationTokenSource.h
:000000 100644 0000000... 947f725... A  Pods/Bolts/Bolts/Common/BFCancellationTokenSource.m
:000000 100644 0000000... cf7dcdf... A  Pods/Bolts/Bolts/Common/BFDefines.h
:000000 100644 0000000... 02af9ba... A  Pods/Bolts/Bolts/Common/BFExecutor.h
:000000 100644 0000000... 292e27c... A  Pods/Bolts/Bolts/Common/BFExecutor.m
:000000 100644 0000000... 827071d... A  Pods/Bolts/Bolts/Common/BFTask.h
...

私はこの答えが「無関係な情報なしで」実際には一致しないことを知っています、しかし私はまだこのリストが単なるファイル名よりももっと役に立つと思います。

12
Koen.

私はこれが好き:

git diff --name-status <SHA1> <SHA1>^
11
skiphoppy

最後のコミットでファイルのリストを変更したいだけなら、単純な1行のコマンドを使用してください。

git diff HEAD~1 --name-only
9
Developer-Sid

これに対する完全な答えを見つけました:

git show --name-status --oneline <commit-hash>

私が知ることができるように 

which files were just modified M

Which files were newly added , A

Which files were deleted , D
8
Ijaz Ahmad Khan

ログを表示します。

COMMITは、空白( "")にすることも、sha-1またはsha-1を短くすることもできます。

git log COMMIT -1 --name-only

これはファイルだけをリストアップします、さらなる処理のために非常に役に立ちます。

git log COMMIT -1 --name-only --pretty=format:"" | grep "[^\s]"
8
thefreshteapot

コミットで変更されたファイルをリストします。

git diff --name-only SHA1^ SHA1

これはログメッセージ、余分な改行、または他の混乱を表示しません。これは、現在のコミットだけでなく、あらゆるコミットに対して機能します。なぜそれが かなり になっていないのかわからないので、私はそれを追加しています。

8
Newtonx

"git show --stat"(Ryanに感謝)といくつかのsedコマンドを組み合わせると、データが整理されます。

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

それは修正されたファイルのリストだけを生成します。

5
seanhodges

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

git show 9d3a52c474:

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

git show 9d3a52c474:someDir/someOtherDir

ファイルをヒットすると、そのファイルの生のバージョンが得られます。これは、ニースの参照やコードの重要な部分だけを探している場合に必要になることがあります(diffはすべてを混乱させることがあります)

git show 9d3a52c474:someDir/someOtherDir/somefile

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

5
srcspider
git show HEAD@{0}

私にとってはうまくいく

2
Bruce

このコマンドで名前を試して、行数を変更してください。 

git show --stat <commit-hash>

ファイル名のみを表示 

git show --stat --name-only  <commit-hash>

最後のコミットハッシュを取得するには、このコマンドを試してください

git log -1またはすべてのgit logの場合 

1
Jignesh Joisar

マージコミットで変更されたファイルのリストを取得するためにこれを使います

λ git log -m -1 --name-only --pretty="format:"
configs/anotherconfig.xml
configs/configsInRepo.xml

または

λ git log -m -1 --name-status --pretty="format:"
A       configs/anotherconfig.xml
M       configs/configsInRepo.xml
1
Piotr Perak

Oh-my-zshとgitプラグインを使用している場合は、 glg のショートカットが便利です。

$ glg
commit f014429013e360e1e1ef4f297b315358a5d47b5e
Author: huhu <[email protected]>
Date:   Tue Dec 18 07:21:11 2018 +0800

    Refine profile page.

 mini/app.json                                |  27 ++++++++-
 mini/components/postItemTwo/postItemTwo.wxml |   6 +-
 mini/pages/daren/daren.js                    |  99 ++++++++++++++++++++++++++++++++
 mini/pages/daren/daren.json                  |   3 +
 mini/pages/daren/daren.wxml                  |  16 ++++++
 mini/pages/daren/daren.wxss                  |  27 +++++++++
1
Henry