2016-11-30 2 views
11

J'ai créé un dépôt, créé un fichier à l'intérieur, mis du contenu dans le fichier et validé le fichier. Maintenant, j'aimerais voir un diff de ce commit, qui devrait idéalement montrer le fichier qui a été ajouté et les lignes qui y ont été ajoutées.Comment obtenir Git diff du premier commit?

Cependant, git diff HEAD^ HEAD renvoie fatal: ambiguous argument 'HEAD^': unknown revision or path not in the working tree., probablement parce que c'était le premier commit au dépôt.

Comment cela peut-il être résolu? Est-il toujours possible d'afficher un diff des fichiers qui ont été ajoutés dans la première validation?

+1

'git show' peut fonctionner. Mais le premier diff est toujours de null à tout le contenu. – ElpieKay

+0

@ElpieKay Cela fonctionne, mais cela inclut également le résumé de validation. Possible de le faire imprimer seulement le diff sans le résumé de la livraison Si je fais 'git show '? –

+0

'git show --pretty = %% | sed 1,2d'. '%%' pourrait être n'importe quel espace réservé qui ne produit qu'une ligne, par ex. '% h','% t'. – ElpieKay

Répondre

38

Vous pouvez faire:

git diff 4b825dc642cb6eb9a060e54bf8d69288fbee4904 HEAD 

4b825dc642cb6eb9a060e54bf8d69288fbee4904 est l'id du « arbre vide » dans Git et il est toujours disponible dans tous les dépôts.

+3

@CharlesBaley, Cool, Où trouvez-vous ce code sha-1? – gzh

+0

Nice, est-ce que c'est quelque chose de documenté ou est-ce que cela dépend d'une fonctionnalité fragile qui pourrait disparaître à l'avenir? –

+2

L'identifiant de l'arbre vide ne changera pas pendant que git continue d'utiliser sha1. Vous pouvez utiliser '$ (printf '' git hash-object -t tree --stdin)' pour une meilleure lisibilité. –