Ne pas utiliser git-log pour les scripts: utilisez l'une git-rev-list, ou git-log avec spécifié format personnalisé ("de --format = <STH>" en option).
Il y a un problème supplémentaire avec votre question: il peut exister plus d'un tel commit racine QUEUE (parentless commit) dans un dépôt (même si nous écartons les branches déconnectées, comme « html », « man » et ' todo 'dans le dépôt git.git). Ceci est généralement le résultat de la jonction de projets séparés en un ou de l'utilisation de la fusion de sous-arborescence d'un sous-projet développé séparément. Par exemple, le dépôt git a 6 validations racine: git-gui, gitk (sous-fusionné), gitweb (fusionné, ne sont plus développés séparément), outils de courrier git (fusionnés très tôt dans l'historique du projet), et p4- exportation rapide (peut-être accidentelle). Cela ne compte pas les racines des branches 'html et' man ', les branches' convenience 'qui contiennent la documentation pré-générée, et la branche' todo 'avec la liste TODO et les scripts.
Vous pouvez obtenir la liste de tous parentless (root) engage accessible à partir de la branche actuelle à l'aide:
$ git rev-list --parents HEAD | egrep "^[a-f0-9]{40}$"
Si vous avez git 1.7.4.2 ou plus récent, vous pouvez utiliser la nouvelle option --max-parents
:
$ git rev-list --max-parents=0 HEAD
Aucun canal, toutes les racines: 'git rev-list --max-parents = 0 HEAD' – wowest
@wowest: Il n'y avait pas d'option' --max-parents' quand je écrivait cette réponse. Thansk pour la mise à jour! –
Pour moi, la 'git rev-list HEAD | tail -n 1' et 'git rev-list --max-parents = 0 HEAD' ne me retourne pas la même valeur de hachage. Celui qui utilise '--max-parents = 0' est en train d'obtenir le commit initial. Je pensais juste que je ferais remarquer que ce dernier semble plus fiable. – jbranchaud