Komut dosyası oluşturmak için git-log kullanmayın: ya git-rev-listveya git-logbelirtilen özel formatla ( --format=*<sth>*seçenek) kullanın.
Sorunuzla ilgili ek bir sorun var: Bir depoda birden fazla TAIL kök yürütme (ebeveynsiz yürütme) olabilir (git.git'te 'html', 'man' ve 'todo' gibi bağlantısı kesilmiş şubeleri indirsek bile) havuz). Bu genellikle ayrı projelerin tek bir projede birleştirilmesinin veya ayrı olarak geliştirilen alt projenin alt ağaç birleştirmesinin kullanılmasının sonucudur.
Örneğin, git deposunun 6 kök işlemi vardır: git-gui, gitk (alt ağaç birleştirilmiş), gitweb (birleştirilmiş, artık ayrı olarak geliştirilmemiştir), git posta araçları (proje geçmişinde çok erken birleştirilmiştir) ve p4-hızlı dışa aktarma ( belki tesadüfi). Bu, 'html ve' man 'dallarının köklerini, önceden oluşturulmuş belgeleri içeren "uygunluk" dallarını ve TODO listesi ve komut dosyalarıyla "yapılacak" dalı saymaz.
Git 1.7.4.2 veya daha yenisine sahipseniz, şu --max-parentsseçeneği kullanabilirsiniz :
$ git rev-list --max-parents=0 HEAD
Aksi takdirde, mevcut şubeden erişilebilen tüm ebeveynsiz (kök) işlemlerin listesini şu şekilde alabilirsiniz:
$ git rev-list --parents HEAD | egrep "^[a-f0-9]{40}$"
git rev-list HEAD | tail -n 1ve benimgit rev-list --max-parents=0 HEADiçin aynı hash değerini döndürmüyor.--max-parents=0Aslında kullanan kişi aslında ilk commit'i alıyor. Sadece ikincisinin daha güvenilir göründüğüne işaret edeceğimi düşündüm.