Katakanlah saya membuat cabang baru my_experiment
dari master
dan membuat beberapa komitmen my_experiment
. Jika saya lakukan git log
ketika dinyalakan my_experiment
, saya melihat komit dibuat untuk cabang ini, tetapi juga komit dibuat master
sebelum my_experiments
cabang dibuat.
Saya akan merasa sangat berguna untuk melihat sejarah semua komitmen terhadap my_experiments
cabang sampai menyentuh cabang itu - secara efektif sejarah sejati dari cabang itu saja. Kalau tidak, tidak jelas bagi saya ketika melihat melalui log apakah komit berada di my_experiments
cabang atau tidak.
Apakah ada cara untuk melakukan ini dengan Git?
git log master..
diceritakan pada Git?master..
).The
git merge-base
perintah dapat digunakan untuk menemukan nenek moyang yang sama. Jadi jika my_experiment belum digabungkan menjadi master dan my_experiment telah dibuat dari master, Anda dapat:sumber
git log --oneline `git merge-base my_experiment master`^..my_experiment --first-parent
Catatan: jika Anda membatasi log itu ke n komit terakhir (3 komit terakhir misalnya, git log -3), pastikan untuk memberi spasi antara 'n' dan cabang Anda:
Sebelum Git 2.1 (Agustus 2014), kesalahan ini:
git log -3master..
sebenarnya akan menunjukkan kepada Anda 3 komit terakhir dari cabang saat ini (di sinimy_experiment
), mengabaikanmaster
batas (artinya jikamy_experiment
hanya mengandung satu komit, 3 masih akan terdaftar, 2 di antaranya darimaster
)Lihat commit e3fa568 oleh Junio C Hamano (
gitster
) :revisi: parse "
git log -<count>
" lebih hati-hatisumber
Anda hanya bisa menggunakan
git log --oneline
sumber
Saya pikir opsi untuk tujuan Anda adalah
git log --online --decorate
. Ini memungkinkan Anda mengetahui komit yang dicentang, dan komit teratas untuk setiap cabang yang Anda miliki dalam alur cerita Anda. Dengan melakukan ini, Anda memiliki pandangan yang bagus tentang struktur repo Anda dan komitmen yang terkait dengan cabang tertentu. Saya pikir membaca ini mungkin membantu.sumber
Saya tahu ini sudah sangat terlambat untuk ini ... Tapi di sini ada satu (tidak begitu sederhana) oneliner untuk mendapatkan apa yang Anda cari:
git show-branch
(mengirim peringatan ke/dev/null
).grep -E "\[$BRANCH_NAME"
.$BRANCH_NAME
diperoleh dengangit branch | grep -E '^\*' | awk '{ printf $2 }'
(cabang dengan bintang, bergema tanpa bintang itu).tail -n+2
.[$BRANCH_NAME]
dengansed -E "s/^[^\[]*?\[/[/"
.sumber