91 votes

Comment obtenir le SHA du dernier commit d'un dépôt git distant ?

Quelqu'un sait-il comment obtenir le dernier SHA d'une branche donnée ? de l'extérieur un dépôt git ?

Si vous êtes dans un dépôt git, vous pouvez le faire :

git log origin/branch_X | head -1

Cependant, je ne suis pas à l'intérieur d'un dépôt git, et je voudrais éviter d'avoir à clone un dépôt juste pour obtenir le dernier SHA d'un tag/branche. Existe-t-il un moyen astucieux de faire cela ?

15voto

antonagestam Points 741

Cela devrait faire l'affaire git ls-remote REMOTE | awk "/BRANCH/ {print \$1}"

Remplacez REMOTE par le nom du référentiel distant et BRANCH par le nom de la branche.

4voto

Si vous voulez seulement le SHA-1 de la branche actuellement extraite de votre dépôt local, vous pouvez simplement spécifier HEAD au lieu de origin/branch_X :

git --git-dir=/path/to/repo/.git rev-parse --verify HEAD

4voto

skensell Points 33

Voici une solution de copier-coller qui fonctionne dans le référentiel.

origin_head=$(git ls-remote --heads $(git config --get remote.origin.url) | grep "refs/heads/master" | cut -f 1)
if [ $origin_head != "$(git rev-parse HEAD)" ]; then
    echo >&2 "HEAD and origin/master differ."
    exit 1
fi

2voto

Greg Hewgill Points 356191

Les références aux têtes de branche sont stockées dans le fichier .git/refs/ arbre. Vous devriez donc être en mesure de trouver le hash du dernier commit à :

cat .git/refs/remotes/origin/branch_X

Votre parcours peut être légèrement différent.

0voto

Ana Marjanica Points 86

Je recommande de récupérer les informations liées uniquement à une branche donnée, puis de les analyser pour obtenir le dernier sha :
git ls-remote <url> --tags <branch_name> | awk '{print $1;}'

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