Ini juga berfungsi untuk git show. git show --name-only SHA1.
Agustus Lilleaas
78
git diff --name-status [TAG|SHA1]menunjukkan operasi apa yang dilakukan pada file juga
recbot
2
Anda juga dapat melakukan: git diff --name-only HEAD @ {3} HEAD @ {0} untuk komit persis yang ingin Anda bandingkan.
B01
7
@AugustLilleaas yang benar-benar menggunakan pertunjukan hanya akan menampilkan 2 komit tertentu, jika Anda memiliki komit di antara 2 itu, mereka akan ditinggalkan
chrisan
4
Seperti disebutkan di bawah, git diff --name-statussepertinya 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-statusmemberi sedikit lebih banyak info, tapi tetap bagus dan padat ... itu akan menjadi perintah goto baru saya;)
travc
417
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 logversi.
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
Saya kebetulan mengatakan git diff --name-status dan itu memang memberikan 'file yang ditambahkan'.
aartist
1
Untuk git log, harus memiliki dua titik di antara SHA, seperti SHA1..SHA2, dan SHA kedua bukan opsional, jadi seharusnya terlihat seperti ini: git log --name-status --oneline [SHA1 .. SHA2]
twasbrillig
Apakah ada cara untuk mengecualikan file tertentu / jenis file tertentu?
Agustus
3
The --relative[=<path>]pilihan dapat membantu Anda, saya tidak yakin. Kalau tidak, selalu ada | erep -v '(.tmp|.foo|.dontwant)$'...
artfulrobot
80
Tampaknya tidak ada yang menyebutkan saklar --stat:
Ini sangat berguna! Saya berharap saya bisa mengatakan git diffstatus masteratau serupa, yang memicu hal di atas.
oma
3
Atau git show --pretty=format: --name-only origin/master...
sschuberth
Anda mungkin tidak bisa membuatnya menjadi alias git, tetapi Anda pasti bisa memasukkannya ke dalam .bashrc Anda.
Fred
3
Atau bahkan lebih sederhana: git diff --name-only HEAD...master(perhatikan tiga titik). Untuk penjelasan terperinci, lihat di sini .
ostrokach
1
Sepertinya sebagian besar jawaban yang benar! Sederhana git diff --name-only master..branchtidak sesuai dengan daftar PR github. Cara ini lebih tepat. Tapi bagaimanapun saya memiliki 173 file chaned vs 171 di github PR. (tanpa merge-basesaya punya 228 vs 171)
x'ES
21
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 grepkaleng memperbaiki hal-hal lebih lanjut:
Regex itu bagus dan memang bisa melakukan hampir semua hal. Namun, dalam hal ini, ada juga --diff-filteryang memberikan fungsi ini secara asli, yang berarti lebih sedikit peluang hasil yang salah (mis. Positif palsu)
Jasper
8
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, showfilesdari repositori git Anda.
alias showfiles='git show --pretty="format:" --name-only'
Perhatikan juga, jika Anda hanya ingin melihat file yang diubah antara komit terakhir dan komit sebelumnya. Ini berfungsi dengan baik:git show --name-only
git log --pretty=onelinememberi saya hanya SHA dan pesan komit menggunakan git 2.10.1
damd
3
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
$ 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-statussaya menulis ekstensi git-diffview git yang membuat tampilan hierarki pohon tentang apa yang berubah antara dua jalur.
Jawaban:
di mana Anda hanya perlu memasukkan cukup SHA untuk mengidentifikasi komitmen. Anda juga bisa melakukannya, misalnya
untuk melihat perbedaan antara komit terbaru kesepuluh dan komit terbaru kelima (atau lebih).
sumber
git show --name-only SHA1
.git diff --name-status [TAG|SHA1]
menunjukkan operasi apa yang dilakukan pada file jugagit diff --name-status
sepertinya tidak ingin menampilkan file yang ditambahkan. @sschuberth menunjukkangit show
, yang tampaknya bekerja dengan baik bagi saya:git show --pretty=format: --name-status
. Hanya melakukangit show --name-status
memberi sedikit lebih banyak info, tapi tetap bagus dan padat ... itu akan menjadi perintah goto baru saya;)seperti --name-only, kecuali Anda mendapatkan awalan sederhana yang memberi tahu Anda apa yang terjadi pada file (dimodifikasi, dihapus, ditambahkan ...)
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>...]
kegit 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
sumber
--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
:Ada juga
--numstat
dan
--shortstat
sumber
Tetapi untuk melihat file berubah antara cabang Anda dan leluhurnya yang sama dengan cabang lain (katakanlah asal / master):
sumber
git diffstatus master
atau serupa, yang memicu hal di atas.git show --pretty=format: --name-only origin/master..
.git diff --name-only HEAD...master
(perhatikan tiga titik). Untuk penjelasan terperinci, lihat di sini .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. (tanpamerge-base
saya punya 228 vs 171)Untuk melengkapi jawaban @ artfulrobot, jika Anda ingin menampilkan file yang diubah antara dua cabang:
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:Itu kemudian hanya akan menampilkan file yang ditambahkan
myotherbranch
.sumber
--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 jalankansource ~/.bash_profile
,; sekarang kapan saja Anda perlu melihat file yang diperbarui di komit terakhir, jalankan,showfiles
dari repositori git Anda.sumber
git config --global alias.showfiles 'show --pretty="format:" --name-only'
untuk membuatgit showfiles
.Ini akan menunjukkan perubahan pada file:
sumber
Perhatikan juga, jika Anda hanya ingin melihat file yang diubah antara komit terakhir dan komit sebelumnya. Ini berfungsi dengan baik:
git show --name-only
sumber
Gunakan git log --pretty = oneline> C: \ filename.log
yang hanya akan mencatat oneline (--pretty = oneline) itulah nama file yang diubah. Juga akan mencatat semua detail ke file output Anda.
sumber
git log --pretty=oneline
memberi saya hanya SHA dan pesan komit menggunakan git 2.10.1Seperti yang dikatakan artfulrobot dalam jawabannya:
Contoh saya:
sumber
Hanya untuk seseorang yang perlu fokus hanya pada file Java, ini solusi saya:
sumber
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 - alihformat:
menghilangkan ruang pemisah antara komit.sumber
Berdasarkan pada
git diff --name-status
saya menulis ekstensi git-diffview git yang membuat tampilan hierarki pohon tentang apa yang berubah antara dua jalur.sumber