回答:
git diff --name-only SHA1 SHA2
コミットを識別するために十分なSHAを含めるだけでよい場合。たとえば、次のこともできます
git diff --name-only HEAD~10 HEAD~5
最新の10番目のコミットと5番目のコミット(またはそれ以降)の違いを確認します。
git show --name-only SHA1
。
git diff --name-status [TAG|SHA1]
は、ファイルに対してどのような操作が行われたかを示しています
git diff --name-status
追加されたファイルを表示したくないようです。@sschuberthが指摘しましたがgit show
、これは私には適切に機能しているようです git show --pretty=format: --name-status
。実行するだけでgit show --name-status
、もう少し多くの情報が得られますが、それでも見栄えがよく、密度が高くなります...これが私の新しいgotoコマンドになります;)
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マージされません-マージ後のファイルの競合
--relative[=<path>]
オプションでは、私はよく分からない、あなたを助けるかもしれません。それ以外の場合は常に| erep -v '(.tmp|.foo|.dontwant)$'
...
誰もスイッチについて言及していないようです--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(-)
しかし、ブランチと別のブランチ(たとえばorigin / master)を持つ共通の祖先との間でファイルが変更されたことを確認するには、次のようにします。
git diff --name-only `git merge-base origin/master HEAD`
git diffstatus master
上記のきっかけとなる、単純に言っても、似たようなものになりたいと思います。
git show --pretty=format: --name-only origin/master..
。
git diff --name-only master..branch
はgithub PRリストに対応していません。この方法はより正確です。しかし、とにかく私はgithub PRで173のチャンドされたファイル対171を持っています。(merge-base
私には228対171はありません)
2つのブランチ間で変更されたファイルを表示したい場合は、@ artfulrobotの回答を補足するには:
git diff --name-status mybranch..myotherbranch
優先順位に注意してください。新しいブランチを最初に配置すると、ファイルは追加ではなく削除されたものとして表示されます。
を追加すると、grep
さらに細かく調整できます。
git diff --name-status mybranch..myotherbranch | grep "A\t"
次に、で追加されmyotherbranch
たファイルのみが表示されます。
--diff-filter
この機能をネイティブに提供するものもあります。つまり、誤った結果(誤検知など)の可能性が低くなります
以下にエイリアスをに追加して~/.bash_profile
実行しますsource ~/.bash_profile
。いつでも、最後のコミットで更新されたファイルを、showfiles
gitリポジトリから実行する必要があります。
alias showfiles='git show --pretty="format:" --name-only'
git config --global alias.showfiles 'show --pretty="format:" --name-only'
作るためにgit showfiles
。
基づいて、git diff --name-status
私が書いたのgit-diffview二つのパスの間の変更の階層ツリービューをレンダリングするgitの拡張子を。