Lihat git log tanpa melakukan penggabungan

89

Saya mencoba untuk melihat komit yang dibuat oleh pengguna tertentu, dan ingin menghapus semua penggabungan yang dilakukan oleh pengguna dari keluaran. Bagaimana saya bisa melakukannya?

Saya dapat memeriksa komit yang digunakan pengguna git log --author=<name>, tetapi tidak dapat menghapus komit gabungan di output.

PS: Konflik penggabungan tidak terjadi dalam alur kerja repo yang dimaksud, semua cabang di-rebased sebelum digabungkan ke master sehingga aman untuk menghapus komit gabungan dari output, dan demikian pula, dua cabang fitur tidak digabungkan dengan satu sama lain. kemungkinan.

mu 無
sumber
2
Bagaimana jika penggabungan memiliki konflik dan dia harus menyelesaikannya?
Joe Phillips
2
@JoePhilllips Itu tidak terjadi dalam alur kerja repo yang dimaksud, semua cabang di-rebased sebelum digabungkan ke master.
mu 無
7
gunakangit log --no-merges
0xAX
1
@ 0xAX Dapatkah Anda memposting itu sebagai jawaban, saya akan menerimanya.
mu 無

Jawaban:

138

menggunakan

git log --author=<name> --no-merges

Selain itu, --first-parentopsi tersebut dapat memberikan hasil yang berguna untuk Anda:

--first-parent Ikuti hanya orang tua pertama yang berkomitmen setelah melihat komit gabungan. Opsi ini dapat memberikan gambaran umum yang lebih baik saat melihat evolusi cabang topik tertentu, karena penggabungan ke dalam cabang topik cenderung hanya tentang menyesuaikan ke upstream yang diperbarui dari waktu ke waktu, dan opsi ini memungkinkan Anda untuk mengabaikan komitmen individu yang dibawa ke sejarah Anda dengan gabungan seperti itu. Tidak dapat digabungkan dengan --bisect.

0xAX
sumber
bahkan lebih bagus dengan --pretty=format:"%h%x09%an%x09%ad%x09%s"
k1eran
1
@ k1eran ini memotong badan komit (dengan asumsi ada satu)
Erythros
1
@Erythros mengerti, dan saya merasa berguna untuk mendapatkan ringkasan ringkas yang dapat dibaca dari komit.
k1eran
Atau termasuk warna dan grafiklog --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --first-parent
Highmastdon
19

Anda dapat menghilangkan penggabungan dengan --no-merges:

git log --no-merges --author=<name>

Lihat halaman manual git log untuk detailnya.

morxa
sumber
2
Ini hanya mengecualikan komit gabungan. Tetapi komit normal di dalam cabang hulu masih terlihat.
Shiplu Mokaddim