Est-ce que quelqu’un sait comment obtenir le dernier SHA d’une twig donnée en dehors d’ un repository git?
Si vous êtes dans un repository git, vous pouvez faire:
git log origin/branch_X | head -1
Cependant, je ne suis pas dans un repository git, et je voudrais éviter de devoir clone
un repository simplement pour obtenir le dernier SHA d’une balise / twig. Y a-t-il une manière intelligente de le faire?
Si vous souhaitez vérifier SHA-1 d’une twig donnée dans un référentiel distant, votre réponse est correcte:
$ git ls-remote
Cependant, si vous êtes sur le même système de fichiers, une solution plus simple (ne nécessitant pas d’extraire SHA-1 de la sortie) serait simplement:
$ git --git-dir=/path/to/repo/.git rev-parse origin/branch_X
Voir la page de --git-dir
git (1) pour une description de l’ --git-dir
.
Utiliser le rev-parse
git rev-parse origin/master # to get the latest commit on the remote git rev-parse HEAD # to get the latest commit on the local
Un de mes collègues m’a répondu ceci:
git ls-remote ssh://git.dev.pages/opt/git/repos/dev.git
-Steve
En utilisant une URL git:
$ git ls-remote | head -1 | sed "s/HEAD//"
Utiliser un répertoire sur un système accessible:
$ git --git-dir=/path/to/repo/.git rev-parse origin/
Cela devrait faire l’affaire git ls-remote REMOTE | awk "/BRANCH/ {print \$1}"
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 twig.
Comme mentionné dans les commentaires ci-dessus, cela devrait être la meilleure solution:
$ git ls-remote
Si vous voulez juste le SHA-1 de la twig actuellement extraite de votre repo local, vous pouvez simplement spécifier HEAD au lieu de origin / branch_X:
git --git-dir=/path/to/repo/.git rev-parse --verify HEAD
Les références aux têtes de twigment sont stockées dans l’ .git/refs/
. Vous devriez donc pouvoir trouver le hachage du dernier commit à:
cat .git/refs/remotes/origin/branch_X
Votre chemin peut légèrement différer.
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
Je recommande de récupérer les informations liées uniquement à une twig donnée, puis d’parsingr pour obtenir la dernière version de sha:
git ls-remote