Jawaban:
git diff --name-only SHA1 SHA2
di mana Anda hanya perlu memasukkan cukup SHA untuk mengidentifikasi komitmen. Anda juga bisa melakukannya, misalnya
git diff --name-only HEAD~10 HEAD~5
untuk melihat perbedaan antara komit terbaru kesepuluh dan komit terbaru kelima (atau lebih).
git show --name-only SHA1
.
git diff --name-status [TAG|SHA1]
menunjukkan operasi apa yang dilakukan pada file juga
git diff --name-status
sepertinya tidak ingin menampilkan file yang ditambahkan. @sschuberth menunjukkan git show
, yang tampaknya bekerja dengan baik bagi saya: git show --pretty=format: --name-status
. Hanya melakukan git show --name-status
memberi sedikit lebih banyak info, tapi tetap bagus dan padat ... itu akan menjadi perintah goto baru saya;)
git diff --name-status [SHA1 [SHA2]]
seperti --name-only, kecuali Anda mendapatkan awalan sederhana yang memberi tahu Anda apa yang terjadi pada file (dimodifikasi, dihapus, ditambahkan ...)
git log --name-status --oneline [SHA1..SHA2]
serupa, tetapi komit terdaftar setelah pesan komit, sehingga Anda dapat melihat kapan file diubah.
jika Anda tertarik dengan apa yang terjadi pada file / folder tertentu, Anda dapat menambahkan -- <filename> [<filename>...]
ke git log
versi.
jika Anda ingin melihat apa yang terjadi untuk satu commit, sebut saja SHA1, lalu lakukan
git log --name-status --oneline [SHA1^..SHA1]
Tanda status file:
M dimodifikasi - File telah dimodifikasi
C copy-edit - File telah disalin dan dimodifikasi
R ganti nama-edit - File telah diubah namanya dan dimodifikasi
A ditambahkan - File telah ditambahkan
D dihapus - File telah dihapus
U unmerged - File memiliki konflik setelah penggabungan
--relative[=<path>]
pilihan dapat membantu Anda, saya tidak yakin. Kalau tidak, selalu ada | erep -v '(.tmp|.foo|.dontwant)$'
...
Tampaknya tidak ada yang menyebutkan saklar --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(-)
Ada juga --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
dan --shortstat
$ git diff --shortstat HEAD~5 HEAD
9 files changed, 117 insertions(+), 26 deletions(-)
Tetapi untuk melihat file berubah antara cabang Anda dan leluhurnya yang sama dengan cabang lain (katakanlah asal / master):
git diff --name-only `git merge-base origin/master HEAD`
git diffstatus master
atau serupa, yang memicu hal di atas.
git show --pretty=format: --name-only origin/master..
.
git diff --name-only master..branch
tidak sesuai dengan daftar PR github. Cara ini lebih tepat. Tapi bagaimanapun saya memiliki 173 file chaned vs 171 di github PR. (tanpa merge-base
saya punya 228 vs 171)
Untuk melengkapi jawaban @ artfulrobot, jika Anda ingin menampilkan file yang diubah antara dua cabang:
git diff --name-status mybranch..myotherbranch
Berhati-hatilah pada prioritas. Jika Anda menempatkan cabang yang lebih baru terlebih dahulu maka itu akan menampilkan file sebagai dihapus daripada ditambahkan.
Menambahkan grep
kaleng memperbaiki hal-hal lebih lanjut:
git diff --name-status mybranch..myotherbranch | grep "A\t"
Itu kemudian hanya akan menampilkan file yang ditambahkan myotherbranch
.
--diff-filter
yang memberikan fungsi ini secara asli, yang berarti lebih sedikit peluang hasil yang salah (mis. Positif palsu)
Tambahkan alias di bawah ini ke Anda ~/.bash_profile
, lalu jalankan source ~/.bash_profile
,; sekarang kapan saja Anda perlu melihat file yang diperbarui di komit terakhir, jalankan, showfiles
dari repositori git Anda.
alias showfiles='git show --pretty="format:" --name-only'
git config --global alias.showfiles 'show --pretty="format:" --name-only'
untuk membuat git showfiles
.
Ini akan menunjukkan perubahan pada file:
git diff --word-diff SHA1 SHA2
Seperti yang dikatakan artfulrobot dalam jawabannya:
git diff --name-status [SHA1 [SHA2]]
Contoh saya:
git diff --name-status 78a09k12067c24d8f117886c4723ccf111af4997
4b95d595812211553070046bf2ebd807c0862cca
M views/layouts/default.ctp
M webroot/css/theme.css
A webroot/img/theme/logo.png
Berikut ini berfungsi dengan baik untuk saya:
$ git show --name-only --format=tformat: SHA1..SHA2
Itu juga dapat digunakan dengan satu komit:
git show --name-only --format=tformat: SHA1
yang berguna untuk digunakan di Jenkins di mana Anda diberikan Daftar SHS perubahan, dan ingin mengulanginya untuk melihat file mana yang telah diubah.
Ini mirip dengan beberapa jawaban di atas, tetapi menggunakan tformat:
alih - alih format:
menghilangkan ruang pemisah antara komit.
Berdasarkan pada git diff --name-status
saya menulis ekstensi git-diffview git yang membuat tampilan hierarki pohon tentang apa yang berubah antara dua jalur.