115 votes

Commande pour obtenir le dernier hash de commit Git d'une branche

Comment puis-je vérifier en ligne de commande le dernier hash de commit d'une branche Git particulière ?

172voto

codeit Points 5108
git log -n 1 [branch_name]

branch_name (peut être une branche distante ou locale) est facultative. Sans branch_name il affichera le dernier commit sur la branche courante.

Par exemple :

git log -n 1
git log -n 1 origin/master
git log -n 1 some_local_branch

git log -n 1 --pretty=format:"%H"  #To get only hash value of commit

82voto

jszakmeister Points 8323

Utilisez git ls-remote git://github.com/<user>/<project>.git . Par exemple, mon projet trac-backlog donne :

:: git ls-remote git://github.com/jszakmeister/trac-backlog.git
5d6a3c973c254378738bdbc85d72f14aefa316a0    HEAD
4652257768acef90b9af560295b02d0ac6e7702c    refs/heads/0.1.x
35af07bc99c7527b84e11a8632bfb396823326f3    refs/heads/0.2.x
5d6a3c973c254378738bdbc85d72f14aefa316a0    refs/heads/master
520dcebff52506682d6822ade0188d4622eb41d1    refs/pull/11/head
6b2c1ed650a7ff693ecd8ab1cb5c124ba32866a2    refs/pull/11/merge
51088b60d66b68a565080eb56dbbc5f8c97c1400    refs/pull/12/head
127c468826c0c77e26a5da4d40ae3a61e00c0726    refs/pull/12/merge
2401b5537224fe4176f2a134ee93005a6263cf24    refs/pull/15/head
8aa9aedc0e3a0d43ddfeaf0b971d0ae3a23d57b3    refs/pull/15/merge
d96aed93c94f97d328fc57588e61a7ec52a05c69    refs/pull/7/head
f7c1e8dabdbeca9f9060de24da4560abc76e77cd    refs/pull/7/merge
aa8a935f084a6e1c66aa939b47b9a5567c4e25f5    refs/pull/8/head
cd258b82cc499d84165ea8d7a23faa46f0f2f125    refs/pull/8/merge
c10a73a8b0c1809fcb3a1f49bdc1a6487927483d    refs/tags/0.1.0
a39dad9a1268f7df256ba78f1166308563544af1    refs/tags/0.2.0
2d559cf785816afd69c3cb768413c4f6ca574708    refs/tags/0.2.1
434170523d5f8aad05dc5cf86c2a326908cf3f57    refs/tags/0.2.2
d2dfe40cb78ddc66e6865dcd2e76d6bc2291d44c    refs/tags/0.3.0
9db35263a15dcdfbc19ed0a1f7a9e29a40507070    refs/tags/0.3.0^{}

Il suffit de chercher celui dont vous avez besoin et de le couper :

:: git ls-remote git://github.com/jszakmeister/trac-backlog.git | \
   grep refs/heads/master | cut -f 1
5d6a3c973c254378738bdbc85d72f14aefa316a0

Ou bien, vous pouvez spécifier les refs que vous voulez sur la ligne de commande et éviter le grep avec :

:: git ls-remote git://github.com/jszakmeister/trac-backlog.git refs/heads/master | \
   cut -f 1
5d6a3c973c254378738bdbc85d72f14aefa316a0

Remarque : il ne doit pas nécessairement s'agir de la git:// URL. Cela peut être https:// o git@github.com: aussi.

A l'origine, il s'agissait de trouver le dernier commit d'une branche distante (pas seulement à partir de votre dernière récupération, mais le dernier commit réel de la branche sur le dépôt distant). Si vous avez besoin du hash du commit pour quelque chose localement, la meilleure réponse est :

git rev-parse branch-name

C'est rapide, facile, et une seule commande. Si vous voulez le hash du commit pour la branche courante, vous pouvez regarder HEAD :

git rev-parse HEAD

2voto

Essayez d'utiliser git log -n 1 après avoir fait un git checkout branchname . Cela montre le hash de commit, l'auteur, la date et le message de commit pour le dernier commit.

Effectuer un git pull origin/branchname d'abord, pour s'assurer que votre dépôt local correspond au dépôt amont.

Si vous voulez seulement voir la liste des commits de votre branche locale qui sont en retard sur la branche distante, faites ceci :

git fetch origin
git cherry localbranch remotebranch

Cela va lister tous les hashs des commits que vous n'avez pas encore fusionnés dans votre branche locale.

2voto

nglinh Points 291

Vous pouvez git fetch nameofremoterepo entonces git log

et personnellement, j'alias gitlog a git log --graph --oneline --pretty --decorate --all . essayez-le et voyez s'il vous convient

0voto

Felix Kling Points 247451

Dans un commentaire, vous avez écrit

Je veux montrer qu'il y a une différence entre le dépôt local et le dépôt Github.

Comme déjà mentionné dans une autre réponse, vous devriez faire un git fetch origin d'abord. Ensuite, si la branche distante est en avance sur votre branche actuelle, vous pouvez lister tous les commits entre votre branche locale et la branche distante avec

git log master..origin/master --stat

Si votre agence locale est en avance :

git log origin/master..master --stat

--stat affiche également une liste des fichiers modifiés.

Si vous voulez lister explicitement les ajouts et les suppressions, utilisez git diff :

git diff master origin/master

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X