Misalkan riwayat git commit Anda terlihat seperti ini:
A---B---C---D---E---F master
\ /
X---Y---Z topic
Apakah mungkin memiliki daftar git hanya komit pada master, AF? Dengan kata lain, jika komit berada di cabang yang digabungkan, saya tidak ingin itu ditampilkan.
git
branch
git-branch
git-log
wch
sumber
sumber
D
danZ
merupakan bagian dari cabang yang digabungkan?git log
memungkinkan untuk menampilkan hanya komitmen tersebut dengan--first-parent
, sehingga Anda mendapatkan hal yang tepatJawaban:
git log
memiliki opsi--first-parent
, jadi Anda tidak akan mendapatkantopic
riwayat.Saat digabungkan dari
master
,master
komit adalah orang tua pertama yang digabungkan. Git log memungkinkan untuk menampilkan hanya komit tersebut dengan --first-parent, jadi Anda mendapatkan hal yang tepat.sumber
--first-parent
melakukannya :) dikombinasikan dengan--no-merges
Anda dapat menyembunyikan komit gabunganTLDR :
git log origin/master --no-merges
akan memberi Anda log master dan mengecualikan komit yang digabungkan (dalam hal ini x, y, z)Poin Asli
Ada cara umum lain untuk melakukannya yang tidak bergantung pada
--first-parent
yang akan membantu dalam situasi tertentu .. menggunakan filter pengecualian cabanggit log origin/topic ^origin/master
Ini akan memberi Anda logorigin/topic
dengan semuaorigin/master
komit dihapus.Anda juga dapat menambahkan
--no-merges
yang akan menyembunyikan komit gabungan yang mungkin Anda inginkan atau tidak inginkan.Tip praktis lainnya adalah menggunakan
shortlog
alih-alihlog
yang akan memberi Anda lebih banyak ringkasan singkat yang dapat berguna untuk catatan rilis, atau komunikasi tentang apa di cabang.Perbarui
Setelah membaca ulang ini, Anda sebenarnya ingin hampir kebalikan dari apa yang saya posting; namun itu akan berakhir dengan mengecualikan semua yang ada di master dan foo (
git log origin/master ^origin/foo
). Namun Anda juga bisa mendapatkan apa yang Anda minta (sembunyikan semua komitmen yang merupakan bagian dari penggabungan) dengangit log origin/master --no-merges
sumber
Jawaban oleh Charles bekerja untuk saya.
Tetapi Jika Anda menggunakan antarmuka pengguna grafis untuk aktivitas Git Anda seperti, Git Extension, SourceTree, Tortoise Git,
Lalu ada opsi langsung untuk memeriksa orang tua pertama di alat Anda. Saya berpikir untuk menambahkan jawaban ini ke daftar karena kebanyakan orang menganggap Antarmuka Grafis mudah. dan Anda dapat langsung memilih semua komit dari cabang tertentu dari alat, jika diperlukan.
Saya telah melampirkan contoh dua alat, Ini akan serupa untuk alat lain juga: [Saya telah mengaburkan nama pengguna, nama repo git karena ini adalah repositori pribadi, tetapi Anda masih bisa mendapatkan ide bagaimana menggunakan orang tua pertama dari alat ]
sumber
Apa ini tidak berhasil?
sumber