Jangan gunakan git-log untuk skrip: gunakan salah satu git-rev-list
, atau git-log
dengan format ( --format=*<sth>*
opsi) khusus.
Ada masalah tambahan dengan pertanyaan Anda: mungkin ada lebih dari satu komit root TAIL (parentless commit) dalam repositori (bahkan jika kami mendiskon cabang yang terputus, seperti 'html', 'man' dan 'todo' di git.git gudang). Ini biasanya merupakan hasil dari bergabungnya proyek yang terpisah dalam satu proyek, atau menggunakan gabungan subtree dari proyek yang dikembangkan secara terpisah.
Misalnya repositori git memiliki 6 commit root: git-gui, gitk (subtree-gabungan), gitweb (digabung, tidak lagi dikembangkan secara terpisah), alat git mail (digabung sangat awal dalam sejarah proyek), dan p4-fast-export ( mungkin tidak disengaja). Itu tidak termasuk akar dari cabang 'html dan' man ', cabang "convenience" yang berisi dokumentasi yang dibuat sebelumnya, dan cabang' todo 'dengan daftar dan skrip TODO.
Jika Anda memiliki git 1.7.4.2 atau yang lebih baru, Anda dapat menggunakan --max-parents
opsi:
$ git rev-list --max-parents=0 HEAD
Jika tidak, Anda bisa mendapatkan daftar semua commit tanpa induk (root) yang dapat diakses dari cabang saat ini menggunakan:
$ git rev-list --parents HEAD | egrep "^[a-f0-9]{40}$"
git rev-list HEAD | tail -n 1
dangit rev-list --max-parents=0 HEAD
tidak mengembalikan nilai hash yang sama untuk saya. Yang menggunakan--max-parents=0
ini sebenarnya mendapatkan komit awal sekalipun. Hanya berpikir saya akan menunjukkan bahwa yang terakhir tampaknya lebih dapat diandalkan.