web-dev-qa-db-ja.com

2つのコミットの間に変更されたファイル名だけを一覧表示するにはどうすればいいですか?

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

どんなコマンドを使うべきですか?

1644
Shawn
git diff --name-only SHA1 SHA2

コミットを識別するために必要なだけのSHAを含める必要があります。また、例えば、

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

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

2190
Peter
git diff --name-status [SHA1 [SHA2]]

--name-onlyに似ていますが、ファイルに何が起こったのかを示す単純な接頭辞が付きます(変更、削除、追加など)。

git log --name-status --oneline [SHA1..SHA2]

似ていますが、コミットはコミットメッセージの後にリストされているので、ファイルがいつ変更されたかを見ることができます。

  • 特定のファイルやフォルダに起こったことだけに興味があるなら、-- <filename> [<filename>...]バージョンにgit logを追加することができます。

  • 1回のコミットで何が起きたのかを知りたい場合は、SHA1としてから、
    git log --name-status --oneline [SHA1^..SHA1]

ファイル状態フラグ
M変更 - ファイルが変更されました
Cコピー編集 - ファイルがコピーされ変更されました
R rename-edit - ファイルの名前が変更され変更されました
追加 - ファイルが追加されました
D削除 - ファイルは削除されました
U unmerged - ファイルはマージ後に競合します 

365
artfulrobot

しかし、あなたのブランチと他のブランチとの共通の祖先の間でファイルが変わっているのを見るために(Origin/masterと言います):

git diff --name-only `git merge-base Origin/master HEAD`
44
Tim James

スイッチ--statについて誰も言及していないようです。

$ git diff --stat HEAD~5 HEAD
 .../Java/org/Apache/calcite/rex/RexSimplify.Java   | 50 +++++++++++++++++-----
 .../Apache/calcite/sql/fun/SqlTrimFunction.Java    |  2 +-
 .../Apache/calcite/sql2rel/SqlToRelConverter.Java  | 16 +++++++
 .../org/Apache/calcite/util/SaffronProperties.Java | 19 ++++----
 .../org/Apache/calcite/test/RexProgramTest.Java    | 24 +++++++++++
 .../Apache/calcite/test/SqlToRelConverterTest.Java |  8 ++++
 .../Apache/calcite/test/SqlToRelConverterTest.xml  | 15 +++++++
 pom.xml                                            |  2 +-
 .../Apache/calcite/adapter/spark/SparkRules.Java   |  7 +--
 9 files changed, 117 insertions(+), 26 deletions(-)

--numstatもあります

$ git diff --numstat HEAD~5 HEAD
40      10      core/src/main/Java/org/Apache/calcite/rex/RexSimplify.Java
1       1       core/src/main/Java/org/Apache/calcite/sql/fun/SqlTrimFunction.Java
16      0       core/src/main/Java/org/Apache/calcite/sql2rel/SqlToRelConverter.Java
8       11      core/src/main/Java/org/Apache/calcite/util/SaffronProperties.Java
24      0       core/src/test/Java/org/Apache/calcite/test/RexProgramTest.Java
8       0       core/src/test/Java/org/Apache/calcite/test/SqlToRelConverterTest.Java
15      0       core/src/test/resources/org/Apache/calcite/test/SqlToRelConverterTest.xml
1       1       pom.xml
4       3       spark/src/main/Java/org/Apache/calcite/adapter/spark/SparkRules.Java

--shortstat

$ git diff --shortstat HEAD~5 HEAD
9 files changed, 117 insertions(+), 26 deletions(-)
42
leeyuiwah

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

git diff --name-status mybranch..myotherbranch

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

grepを追加すると、さらに細かくすることができます。

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

そうするとmyotherbranchに追加されたファイルだけが表示されます。

19
Max MacLeod

以下のエイリアスをあなたの~/.bash_profileに追加してから、source ~/.bash_profileを実行してください。最後のコミットで更新されたファイルを見る必要があるときはいつでも、gitリポジトリからshowfilesを実行してください。 

alias showfiles='git show --pretty="format:" --name-only'
8
Zorayr

これはファイルの変更を表示します。

git diff --Word-diff SHA1 SHA2
7
Julio Marins

git log --pretty = oneline> C:\ filename.logを使用してください。

変更されたファイルの名前を表す1つのオンライン(--pretty = oneline)だけが記録されます。またすべての詳細をあなたの出力ファイルに記録します。

3
Agni

最後のコミットとその前のコミットの間に変更されたファイルを見たいだけの場合も、注意してください。これはうまくいきます:git show --name-only

3
Parris

Artfulrobotが彼の答えで言ったように:

git diff --name-status [SHA1 [SHA2]]

私の例:

git diff --name-status 78a09k12067c24d8f117886c4723ccf111af4997 
4b95d595812211553070046bf2ebd807c0862cca
M       views/layouts/default.ctp
M       webroot/css/theme.css
A       webroot/img/theme/logo.png
2
Jaime Montoya

git diff --name-statusに基づいて、私は git-diffview gitエクステンションを書きました。

0
Bernard Opic

以下は私にはうまくいきます:

$ git show --name-only --format=tformat: SHA1..SHA2

単一のコミットでも使用できます。

git show --name-only --format=tformat: SHA1

これは、あなたがchangeSet SHAのリストを提供されていて、どのファイルが変更されたかを見るためにそれらを反復したい、Jenkinsでの使用に便利です。 

これは上記のいくつかの答えに似ていますが、tformat:ではなくformat:を使用すると、コミットの間の区切りスペースが削除されます。

0
blindsnowmobile

Javaファイルだけに集中する必要がある人にとっては、これが私の解決策です。

 git diff --name-status SHA1 SHA2 | grep '\.Java$'
0
K. Symbol