Suchen Sie ein Commit auf GitHub mit dem Commit-Hash

286

Ich bin ziemlich neu in Github und bin auf ein Amateurproblem gestoßen.

Ich wurde gebeten, eine Codeüberprüfung durchzuführen, und habe einen Commit-Hash erhalten. Ich habe jedoch versucht, in Git zu suchen, ob ich mit Commit-Hashes suchen kann, aber nichts gefunden habe.

Gibt es eine Möglichkeit, den geänderten Code mithilfe des Commit-Hash zu finden?

Dopplesoldner
quelle
46
Ich finde es äußerst bizarr, dass Github Hashes bei Suchvorgängen nicht erkennt und Ihnen das Commit zeigt, wenn es einen passenden Hash gibt.
Craig Ringer
Bei @CraigRinger stimmt die Github-Suche mit Hashes überein, wenn sie in einer Pull-Anforderung auftreten . In der Tat können Sie den gesamten Github nach einem siebenstelligen Hash-Präfix durchsuchen, wenn Sie möchten. Aber es muss eine Pull-Anfrage sein, nicht irgendein Commit.
Todd Owen
4
@ToddOwen Was schön ist, aber nicht der Punkt. Es sollte mit Commit-Hashes innerhalb eines Repos übereinstimmen, wenn Sie innerhalb dieses Repos suchen. Es ist wirklich verrückt, dass dies nicht der Fall ist.
Craig Ringer
2
@CraigRinger Endlich endlich! Siehe meine neue Antwort .
Todd Owen

Antworten:

378

Eine URL des Formulars https://github.com/<owner>/<project>/commit/<hash>zeigt Ihnen die Änderungen, die in diesem Commit vorgenommen wurden. Hier ist zum Beispiel ein kürzlich veröffentlichter Bugfix, den ich an einem meiner Projekte auf GitHub vorgenommen habe:

https://github.com/jerith666/git-graph/commit/35e32b6a00dec02ae7d7c45c6b7106779a124685

Sie können den Hash auch auf ein eindeutiges Präfix kürzen, z. B.:

https://github.com/jerith666/git-graph/commit/35e32b


Ich weiß, dass Sie gerade nach GitHub gefragt haben, aber der Vollständigkeit halber: Wenn Sie das Repository über die Befehlszeile ausgecheckt haben, können Sie mit beiden Befehlen im Grunde dasselbe erreichen (auch hier funktionieren eindeutige Präfixe):

git show 35e32b6a00dec02ae7d7c45c6b7106779a124685
git log -p -1 35e32b6a00dec02ae7d7c45c6b7106779a124685

Hinweis: Wenn Sie den Commit-Hash zu weit kürzen, erhalten Sie in der Befehlszeile eine hilfreiche Disambiguierungsnachricht. GitHub gibt jedoch nur eine 404 zurück.

Matt McHenry
quelle
Ich bin darauf gestoßen, als ich versucht habe, eine Behauptung in Mongo zu verfolgen, und habe festgestellt, dass es ein ähnliches URL-Muster zum Anzeigen einer bestimmten Datei gibt, wenn man den Hash eines Commits berücksichtigt : github.com/$owner/$project/blob/$hash/path /to/file.ext - zB github.com/mongodb/mongo/blob/…
RubyTuesdayDONO
In diesem: git log -p -1 35e32b6a00dec02ae7d7c45c6b7106779a124685ist das -1notwendig, weil es sonst alle älteren Commits anzeigen würde; Es ist gut zu wissen, dass Sie die vier Anfangsnummern des Hashs verwenden können (das Minimum in meinen Tests), da es keine automatische Vervollständigung für den Hash gibt. und Sie können den Zweig nicht wie folgt angeben : git log master -p -1 35e3. Git-Version: 1.7.9.5.
Rafael Barros
Noch eine Bemerkung, aber eine sehr wichtige: Auch hier können Sie keinen Zweig angeben, aber er durchsucht automatisch die lokalen und entfernten Zweige, wenn Sie einen Hash eingeben. Ja, Sie können also nach einem bestimmten Remote-Diff suchen, bevor Sie über die Befehlszeile mit dem lokalen Repo zusammenführen.
Rafael Barros
1
Falls sich jemand wundert (ich war es!), Funktioniert dies auch mit den ersten 8 des Hashs sowohl auf github: github.com/jerith666/git-graph/commit/35e32b6a als auch in der Befehlszeile:git log -p -1 35e32b6a
SimplGy
7
Es ist irgendwie dumm, dass die Benutzeroberfläche dies nicht einfacher macht als es ist ... Ich hoffe, die Feature-Anfrage wird es schaffen.
Okroquette
49

Single Commit anzeigen:
https://github.com/<user>/<project>/commit/<hash>

Protokoll anzeigen:
https://github.com/<user>/<project>/commits/<hash>

Vollständiges Repo anzeigen:
https://github.com/<user>/<project>/tree/<hash>

<hash> kann beliebig lang sein, solange es einzigartig ist.

qwertzguy
quelle
1
Wenn die Länge mindestens 7 Zeichen beträgt, ist es in
Ordnung
3
Keine Mindestlänge für den Commit-Hash beträgt 4 Zeichen (wieder, solange er im gesamten Repository eindeutig ist)
qwertzguy
21

Die Möglichkeit, Commits zu suchen, wurde kürzlich zu GitHub hinzugefügt.

Um nach einem Hash zu suchen, geben Sie einfach mindestens die ersten 7 Zeichen in das Suchfeld ein. Klicken Sie dann auf der Ergebnisseite auf die Registerkarte "Commits", um übereinstimmende Commits anzuzeigen (normalerweise jedoch nur auf dem Standardzweig master), oder auf die Registerkarte "Issues", um Pull-Anforderungen anzuzeigen, die das Commit enthalten.

Um genauer zu sein, können Sie hash:der Suche das Präfix hinzufügen , dies ist jedoch nicht unbedingt erforderlich.

Es gibt auch eine REST-API (zum Zeitpunkt des Schreibens befindet sie sich noch in der Vorschau).

Todd Owen
quelle
2
Ich bin überrascht, dass es tatsächlich so funktioniert. Es ist so nicht intuitiv. Standardmäßig zeigt Github die Registerkarte "Code" an, offensichtlich ohne Ergebnisse. Sollte nicht standardmäßig die einzige Registerkarte mit Ergebnissen angezeigt werden?
Sommer
Um klar zu sein, wenn Sie eine eigene Enterprise-Installation von Github haben, können Sie jedes Commit in jedem Repo finden, indem Sie wie folgt danach suchen: https://YourGithubDomain/search?q=YOUR_COMMIT_HASH&type=Commits Beachten Sie, dass ich dies auch auf Github versucht habe und es dort auch funktioniert hat, z. B. https://github.com/search?q=38db172d13962ea177c00c9a3b4b3169b317e94b&type=Commits
Brad Parks