2010-03-27 3 views
0
git init 
echo 'I am foo' > foo.txt 
git add foo.txt # this woould create a git commit object 
echo ' I am foo2' > foo.txt 
git add foo.txt # this would create another git commit object 
git commit -m 'doe' # this would create two git 
        # objects: one commit object and one tree object 

Comment obtenir une liste des 4 validations SHA1_HASH?liste de tous les commits SHA1_HASH

cd .git/objects 
ls 
(master)$ ls -al 
total 0 
drwxr-xr-x 8 nsingh staff 272 Mar 27 16:44 . 
drwxr-xr-x 13 nsingh staff 442 Mar 27 16:44 .. 
drwxr-xr-x 3 nsingh staff 102 Mar 27 16:44 37 
drwxr-xr-x 3 nsingh staff 102 Mar 27 16:43 a2 
drwxr-xr-x 3 nsingh staff 102 Mar 27 16:44 e1 
drwxr-xr-x 3 nsingh staff 102 Mar 27 16:42 e6 
drwxr-xr-x 2 nsingh staff 68 Mar 27 16:42 info 
drwxr-xr-x 2 nsingh staff 68 Mar 27 16:42 pack 

Je peux trouver la liste de tous les 4 commits en regardant le fichier ici, mais il doit y avoir une meilleure façon.

+0

Vous vous méprenez également sur la création de quatre objets de validation. Tout 'git add' est de vérifier les choses dans l'index. Vous avez seulement créé un commit, quand vous avez lancé 'git commit'. Et vous n'avez certainement pas besoin de savoir quel est le SHA1 de l'arbre pour ce commit, mais si vous mourez d'envie de le savoir, vous pouvez utiliser 'git log --pretty =% T' pour le voir. – Cascabel

+0

Les objets que vous avez créés en faisant tout ceci sont: un commit (à partir de git commit), un arbre (l'arbre de ce commit), et un blob (le contenu de foo.txt). La première paire echo/add n'a pas d'effet durable, car vous l'avez écrasée avec la paire suivante. – Cascabel

+1

Pour en savoir plus sur les internes, essayez peut-être le livre de la communauté git: http://book.git-scm.com/1_the_git_object_model.html ou pro git: ttp: //progit.org/book/ch9-2.html (parmi beaucoup d'autres) – Cascabel

Répondre

2

Essayez git log --pretty=oneline.

2

git log --format=format:%H affichera uniquement les hachages de validation, un par ligne. Jetez un oeil à la pretty formats section de man git-log pour plus d'informations sur les options de format. La suggestion --pretty=oneline est similaire, mais vous donnera également les messages de validation ainsi que les hachages.

+0

Dans les versions actuelles de git, vous n'avez pas besoin de ce préfixe supplémentaire - vous pouvez simplement faire 'git log --pretty =% H'. – Cascabel

+3

Ou utilisez 'git rev-list' –

0

Si vous souhaitez uniquement l'abréviation SHA 1, essayez git log --abbrev-commit --pretty=oneline.

Questions connexes