Pertanyaan Bagaimana daftar hanya nama file yang berubah antara dua commit?


Saya memiliki banyak komit di repo. Saya ingin melihat daftar file yang diubah antara dua commit - dari SHA1 ke SHA2.

Perintah apa yang harus saya gunakan?


1474
2017-10-12 01:48


asal


Jawaban:


git diff --name-only SHA1 SHA2

di mana Anda hanya perlu memasukkan cukup SHA untuk mengidentifikasi komit. Anda juga bisa melakukan, misalnya

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

untuk melihat perbedaan antara komit terakhir kesepuluh dan yang terbaru kelima (atau lebih).


2006
2017-10-12 01:51



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 commit terdaftar setelah pesan commit, sehingga Anda dapat melihat ketika sebuah file diubah.

  • jika Anda tertarik pada apa yang terjadi pada file / folder tertentu yang dapat Anda tambahkan -- <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]

Bendera status file:
M modified - File telah dimodifikasi
C copy-edit - File telah disalin dan dimodifikasi
R rename-edit - File telah diubah namanya dan dimodifikasi
A ditambahkan - File telah ditambahkan
D dihapus - File telah dihapus
U unmerged - File memiliki konflik setelah penggabungan


342
2017-07-26 09:26



Tetapi untuk melihat file berubah antara cabang Anda dan leluhurnya dengan cabang lain (katakan asal / master):

git diff --name-only `git merge-base origin/master HEAD`

41
2018-03-20 17:10



Sepertinya tidak ada yang menyebut tombol itu --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(-)

27
2017-10-19 21:50



Untuk melengkapi jawaban @ artfulrobot, jika Anda ingin menampilkan file yang diubah di antara dua cabang:

git diff --name-status mybranch..myotherbranch

Hati-hati pada prioritas. Jika Anda menempatkan cabang yang lebih baru terlebih dahulu maka itu akan menampilkan file sebagai dihapus daripada ditambahkan.

Menambahkan a grep dapat menyaring lebih lanjut:

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

Itu akan menampilkan hanya file yang ditambahkan myotherbranch.


17
2017-10-22 10:42



Tambahkan alias di bawah ini ke Anda ~/.bash_profile, lalu lari, source ~/.bash_profile; sekarang kapan saja Anda perlu melihat file yang diperbarui di commit terakhir, jalankan, showfiles dari repositori git Anda.

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

8
2018-04-10 19:38



Ini akan menunjukkan perubahan dalam file:

git diff --word-diff SHA1 SHA2

7
2017-12-04 15:10



Menggunakan git log --pretty = oneline> C: \ filename.log

yang hanya akan mencatat oneline (--pretty = oneline) yaitu nama file yang diubah. Juga akan mencatat semua detail ke file output Anda.


3
2017-09-10 10:59