Saya sudah menemukan jawaban ini: Jumlah komit pada cabang di git tetapi itu mengasumsikan bahwa cabang dibuat dari master.
Bagaimana saya bisa menghitung jumlah komit di sepanjang cabang tanpa mengandalkan asumsi itu?
Dalam SVN ini sepele, tetapi untuk beberapa alasan sangat sulit untuk mengetahui di git.
Jawaban:
Untuk menghitung komit untuk cabang tempat Anda berada:
untuk cabang
Jika Anda ingin menghitung komit pada cabang yang dibuat sejak Anda membuat cabang
Ini akan menghitung semua komit yang pernah dibuat yang tidak atas nama cabang juga.
Contohnya
Hasil: 3
Jika cabang Anda berasal dari cabang yang disebut
develop
:Hasil: 3
Mengabaikan Gabung
Jika Anda menggabungkan cabang lain ke cabang saat ini tanpa maju cepat dan Anda melakukan di atas, gabungan juga dihitung. Ini karena bagi git, gabungan adalah komit.
Jika Anda tidak ingin menghitung komit ini tambahkan
--no-merges
:sumber
git log
ini berfungsi lebih baik daripada saran lainnya.Untuk melihat total tidak ada komitmen, Anda dapat melakukan seperti yang disarankan Peter di atas
Dan jika Anda ingin melihat jumlah komitmen yang dibuat oleh setiap orang coba baris ini
akan menghasilkan output seperti ini
sumber
Mungkin memerlukan versi Git yang relatif baru, tetapi ini bekerja dengan baik untuk saya:
Ini memberi saya hitungan tepat komit di cabang saat ini dengan basis master.
Perintah dalam jawaban Peter,
git rev-list --count HEAD ^develop
termasuk lebih banyak komitmen, 678 vs 97 pada proyek saya saat ini.Riwayat komit saya linear pada cabang ini, demikian YMMV, tetapi memberi saya jawaban tepat yang saya inginkan, yaitu "Berapa banyak komit yang telah saya tambahkan sejauh ini pada cabang fitur ini?".
sumber
A special notation "<commit1>..<commit2>" can be used as a short-hand for "^'<commit1>' <commit2>". For example, either of the following may be used interchangeably: $ git rev-list origin..HEAD $ git rev-list HEAD ^origin
git fetch upstream; BEHIND=$(git rev-list --count HEAD..upstream/master); git merge --ff-only upstream/master~$BEHIND;
tidak mengantri. BEHIND seperti 1800 ketika pada kenyataannya tidak ada yang lebih besar dari menggabungkan upstream / master ~ 400 menghasilkan perubahan. menggunakan--no-merges
tidak jauh lebih baik, memberi seperti 900. Dan jika saya melakukan penggabungan seperti ini dengan ~ 800, dan jumlah rev-list adalah 1800, maka saya melakukan penggabungan dengan ~ 790 saya mendapatkan antara 6 dan 28 jumlah yang lebih rendah di rev -daftar.Berapa banyak komitmen yang dilakukan untuk cabang saat ini sejak awal sejarah, tidak termasuk komitmen dari cabang gabungan:
Dari dokumentasi git rev-list --help :
Catatan: Klon dangkal akan mengecilkan ukuran riwayat. Misalnya jika Anda mengkloning
--depth 1
, akan mengembalikan 1.jumlah komitmen yang dilakukan karena beberapa komitmen lain:
atau sama:
atau gunakan referensi git lainnya :
Hitungan komit dilakukan sejak 2018 tahun
01-01-2018, 01.01.2018, 2018.01.01 juga berfungsi.
git rev-label
Saya menulis sebuah skrip untuk mendapatkan revisi versi dari Git dalam format seperti
'$refname-c$count-g$short$_dirty'
yang diperluasmaster-c137-gabd32ef
.Bantuan disertakan ke skrip itu sendiri.
sumber
Bagaimana tentang
git log --pretty=oneline | wc -l
Itu harus menghitung semua komitmen dari perspektif cabang Anda saat ini.
sumber
Saya suka melakukannya
git shortlog -s -n --all
. Memberi Anda daftar gaya "leaderboard" nama dan jumlah komit.sumber
Salah satu cara untuk melakukannya adalah mendaftar log untuk cabang Anda dan menghitung garis.
sumber
Baiklah, jawaban yang dipilih tidak berfungsi jika Anda memotong cabang dari cabang yang tidak spesifik (yaitu, tidak
master
ataudevelop
).Di sini saya menawarkan cara lain yang saya gunakan di
pre-push
kait git saya .Untuk analisis lebih lanjut, silakan kunjungi blog saya
sumber
Sebagai referensi OP Jumlah komit pada cabang di git saya ingin menambahkan bahwa jawaban yang diberikan di sana juga bekerja dengan cabang lain, setidaknya sejak git versi 2.17.1 (dan tampaknya lebih andal daripada jawaban oleh Peter van der Do):
bekerja dengan benar:
Perintah terakhir memberikan nol komit seperti yang diharapkan karena saya baru saja membuat cabang. Perintah sebelumnya memberi saya jumlah sebenarnya dari komit di cabang pengembangan saya dikurangi komit gabungan
tidak bekerja dengan benar:
Dalam kedua kasus saya mendapatkan jumlah semua komitmen di cabang pengembangan dan master dari mana cabang (secara tidak langsung) turun.
sumber
Jika Anda menggunakan sistem UNIX, Anda bisa melakukannya
sumber
Anda juga dapat melakukan git log | grep commit | wc -l
dan dapatkan hasilnya kembali
sumber
git log
output, sehingga komit akan dihitung dua kali dalam hasilnya. Lebih buruk lagi jika pesan komit mengandung kata "komit" dua kali pada dua baris terpisah.