Weiß jemand, wie man die neueste SHA eines bestimmten Zweigs von außerhalb eines Git-Repositorys erhält ?
Wenn Sie sich in einem Git-Repository befinden, können Sie Folgendes tun:
git log origin/branch_X | head -1
Ich bin jedoch nicht in einem Git-Repository und möchte vermeiden, dass ich in clone
ein Repository muss, um die neueste SHA eines Tags / Zweigs zu erhalten. Gibt es eine clevere Möglichkeit, dies zu tun?
Antworten:
Wenn Sie SHA-1 eines bestimmten Zweigs im Remote-Repository überprüfen möchten, ist Ihre Antwort richtig:
Wenn Sie sich jedoch im selben Dateisystem befinden, wäre eine einfachere Lösung (ohne dass SHA-1 aus der Ausgabe extrahiert werden muss) einfach:
In der Manpage zu git (1) finden Sie eine Beschreibung der
--git-dir
Option ' '.quelle
Verwenden Sie rev-parse
quelle
git rev-parse HEAD
Gibt das letzte Commit in der lokalen Kopie zurück, währendgit rev-parse origin/master
das letzte Commit auf Remote zurückgegeben wird. Dies wurde hier abgefragt. Dies ist meine Lieblingsantwort, auch wenn der erste Befehl entfernt werden sollte.git rev-parse
gegen ein Repository zu verwenden, für das Sie lokal keine Informationen haben?git fetch origin; git rev-parse origin/master
ist der Abruf nicht extrem wichtig?Ein Kollege von mir hat das für mich beantwortet:
quelle
Verwenden einer Git-URL:
Verwenden eines Verzeichnisses auf einem zugänglichen System:
quelle
sed "s/\tHEAD//"
diese Option, um auch die nachfolgende Registerkarte zu entfernen.| awk '{ print $1 }'
?Dies sollte den Trick tun
git ls-remote REMOTE | awk "/BRANCH/ {print \$1}"
Ersetzen Sie REMOTE durch den Namen des Remote-Repositorys und BRANCH durch den Namen des Zweigs.
quelle
Wie in den obigen Kommentaren erwähnt, sollte dies die beste Lösung sein:
$ git ls-remote <URL> | head -1 | cut -f 1
quelle
Wenn Sie nur den SHA-1 aus dem aktuell ausgecheckten Zweig Ihres lokalen Repos möchten, können Sie einfach HEAD anstelle von origin / branch_X angeben:
git --git-dir=/path/to/repo/.git rev-parse --verify HEAD
quelle
Hier ist eine Copy-Paste-Lösung, die im Repository funktioniert.
quelle
grep "refs/heads/master$"
, wenn jemand nach anderen Zweigen als master oder einem master2-Zweig fragen könnte, könnte dies brechen;)Verweise auf Zweigköpfe werden im
.git/refs/
Baum gespeichert . Sie sollten also in der Lage sein, den Hash des neuesten Commits unter folgender Adresse zu finden:Ihr Weg kann leicht abweichen.
quelle
Ich empfehle, Informationen abzurufen, die sich nur auf einen bestimmten Zweig beziehen, und dann zu analysieren, um die neuesten Informationen zu erhalten:
git ls-remote <url> --tags <branch_name> | awk '{print $1;}'
quelle