Log SVN memiliki mode "-v" yang menampilkan nama file file yang diubah di setiap komit, seperti:
jes5199 $ svn log -v -------------------------------------------------- ---------------------- r1 | jes5199 | 2007-01-03 14:39:41 -0800 (Rabu, 03 Jan 2007) | 1 baris Jalur yang diubah: A / PENULIS A / SALINAN A / ChangeLog A / EVOLUSI A / INSTALL A / MacOSX
Apakah ada cara cepat untuk mendapatkan daftar file yang diubah di setiap commit di git?
git log
tidak hanya mendukung-v
sakelar seperti yang banyak diharapkan / inginkan? </gripe>Jawaban:
Untuk nama path lengkap dari file yang diubah:
Untuk nama path lengkap dan status file yang diubah:
Untuk nama path yang disingkat dan diffstat dari file yang diubah:
Ada banyak opsi lagi, lihat dokumen .
sumber
git log --numstat
. Lihatgit help log
opsi lainnya.git log --name-only --oneline
juga cukup keren - satu garis berwarna untuk komit, dan satu file per baris. stackoverflow.com/a/14227496/1995714git log --name-status --find-renames
untuk menampilkan file berganti nama alih-alih penambahan + penghapusan.--stat
menyingkat jalur panjang; Lebar dapat dikonfigurasi tetapi histogram yang dibungkus lebih sulit dibaca. Format lain seperti--numstat
selalu mencetak path lengkap.--numstat
ada pada baris 946 dari halaman manual itu pada git 2.22.00. Itu lebih banyak pilihan daripada yang dibutuhkan kebanyakan orang.CATATAN: sudah usang, gunakan saja
git whatchanged
git log
Anda dapat menggunakan perintah
git whatchanged --stat
untuk mendapatkan daftar file yang berubah di setiap komit (bersama dengan pesan komit).Referensi
sumber
git show
juga merupakan perintah yang hebat.Ini seperti
svn diff
, tetapi Anda bisa memberikannya panduan dan melihat perbedaan itu.sumber
Jika Anda ingin mendapatkan nama file hanya tanpa sisa pesan komit Anda dapat menggunakan:
Ini kemudian dapat diperluas untuk menggunakan berbagai opsi yang berisi nama file:
Satu hal yang perlu diperhatikan ketika menggunakan metode ini adalah bahwa ada beberapa baris kosong dalam output yang harus diabaikan. Menggunakan ini dapat berguna jika Anda ingin melihat file yang telah diubah pada cabang lokal, tetapi belum didorong ke cabang jarak jauh dan tidak ada jaminan terbaru dari jarak jauh telah ditarik. Misalnya :
Akan menampilkan semua file yang telah diubah di cabang lokal, tetapi belum digabung ke cabang master di remote.
sumber
git log --stat --pretty="format:" $branchName
,. Jadi misalnyagit log --stat --pretty="format:" $(git rev-parse --abbrev-ref HEAD)
,. Sementara saya melakukannya, inilah mantra yang akhirnya menjadi relevan dengan tujuan saya:git log --name-only --pretty="format: " master..$(git rev-parse --abbrev-ref HEAD)
Saya menggunakan ini setiap hari untuk menunjukkan riwayat dengan file yang berubah:
Agar singkat, tambahkan alias di Anda
.gitconfig
dengan melakukan:sumber
Saya menggunakan ini:
yang menampilkan daftar file saja dan kondisinya (ditambahkan, dimodifikasi, dihapus):
sumber
git diff --stat HEAD^!
menunjukkan file yang diubah dan jumlah baris ditambahkan / dihapus untuk komit terakhir (HEAD
).Tampaknya bagi saya bahwa tidak ada perintah tunggal untuk mendapatkan hasil ringkas yang hanya terdiri dari nama file dan jumlah baris ditambahkan dan dihapus untuk beberapa komit sekaligus, jadi saya membuat skrip bash saya sendiri untuk itu:
Untuk dipanggil mis.
./changed_files 99
untuk mendapatkan perubahan dalam bentuk ringkas dariHEAD
hinggaHEAD~99
. Bisa disalurkan misalnya. untukless
.sumber
git diff --stat HEAD..master
untuk menunjukkan perbedaan antara HEAD dan master, atau tidakkah ini ada ketika Anda memposting jawaban Anda pada tahun 2012?HEAD
danmaster
. Itu adalah dua hal yang berbeda.Saya menemukan berikut ini adalah tampilan yang ideal untuk daftar file apa yang diubah per komit dalam format ringkas:
sumber
Ringkasan jawaban dengan contoh output
Ini menggunakan repositori lokal dengan lima komit sederhana.
Kredit ke @ CB-Bailey @ Peter-Suwara @Gaurav @ Omer-Dagan @xsor @Hazok @nrz @ptc
sumber
Perintah lain yang bermanfaat adalah di
git diff-tree <hash>
mana hash juga bisa menjadi rentang hash (dilambangkan dengan<old>..<new>
notasi). Contoh keluaran:Fieldnya adalah:
mode sumber, mode dest, hash sumber, hash dest, status, nama file
Status adalah yang Anda harapkan: D (dihapus), A (ditambahkan), M (dimodifikasi) dll. Lihat halaman manual untuk deskripsi lengkap.
sumber
Saya biasanya menggunakan ini untuk mendapatkan log:
sumber