Trova un commit su GitHub dato l'hash di commit


286

Sono abbastanza nuovo con Github e ho riscontrato un problema amatoriale.

Mi è stato chiesto di fare una revisione del codice e mi è stato fornito un hash di commit, tuttavia ho provato a cercare in Git se posso cercare usando hash di commit ma non sono riuscito a trovare nulla.

Esiste un modo per trovare il codice modificato semplicemente usando l'hash di commit?


46
Trovo assolutamente bizzarro che Github non riconosca gli hash nelle ricerche e ti mostri il commit se c'è una corrispondenza con quell'hash.
Craig Ringer,

In realtà @CraigRinger, la ricerca di github corrisponderà agli hash se si verificano in una richiesta pull . In effetti, puoi cercare nell'intero github un prefisso hash di sette caratteri se vuoi. Ma deve essere una richiesta pull, non solo un commit.
Todd Owen,

4
@ToddOwen Che è bello, ma non è questo il punto. Deve corrispondere agli hash di commit all'interno di un repository quando si esegue una ricerca all'interno di quel repository, è davvero strano che non lo faccia.
Craig Ringer,

2
@CraigRinger Lo fa ora, finalmente! Vedere la mia nuova risposta .
Todd Owen,

Risposte:


379

Un URL del modulo https://github.com/<owner>/<project>/commit/<hash>mostrerà le modifiche introdotte in tale commit. Ad esempio, ecco un bugfix recente che ho apportato a uno dei miei progetti su GitHub:

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

Puoi anche abbreviare l'hash a qualsiasi prefisso univoco, in questo modo:

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


So che hai appena chiesto di GitHub, ma per completezza: se hai il repository estratto, dalla riga di comando, puoi ottenere sostanzialmente la stessa cosa con uno di questi comandi (anche qui i prefissi univoci funzionano):

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

Nota: se accorciare troppo l'hash di commit, la riga di comando fornisce un utile messaggio di chiarimento delle ambiguità, ma GitHub restituirà semplicemente un 404.


mi sono imbattuto in questo durante il tentativo di tracciare un'asserzione in mongo e ho scoperto che esiste un modello URL simile per visualizzare un file specifico, dato l'hash di un commit: github.com/$owner/$project/blob/$hash/path /to/file.ext - ad esempio github.com/mongodb/mongo/blob/…
RubyTuesdayDONO

In questo: git log -p -1 35e32b6a00dec02ae7d7c45c6b7106779a124685il -1è necessaria perché altrimenti avrebbe mostrato tutti i fra i più anziani commit; è bene sapere che è possibile utilizzare i quattro numeri iniziali dell'hash (il minimo nei miei test), perché non esiste un completamento automatico per l'hash; e non è possibile specificare il ramo in questo modo: git log master -p -1 35e3. Versione Git: 1.7.9.5.
Rafael Barros,

Un altro obs, ma uno molto importante: ancora una volta, non puoi specificare un ramo, ma cerca automaticamente i rami locali e remoti quando dai un hash. Quindi, sì, puoi cercare un diff remoto specifico prima di unire il repository locale dalla riga di comando.
Rafael Barros,

1
Nel caso qualcuno si stia chiedendo (lo ero!), Questo funziona anche con i primi 8 dell'hash sia su github: github.com/jerith666/git-graph/commit/35e32b6a che sulla riga di comando:git log -p -1 35e32b6a
Semplificazione

7
È un po 'stupido che l'interfaccia utente non lo renda più facile di quanto non sia ... Spero che la richiesta di funzionalità lo faccia.
ocroquette,

49

Visualizza commit singolo:
https://github.com/<user>/<project>/commit/<hash>

Vista del registro:
https://github.com/<user>/<project>/commits/<hash>

Visualizza repository completo:
https://github.com/<user>/<project>/tree/<hash>

<hash> può essere di qualsiasi lunghezza purché unica.


1
se la lunghezza è di almeno 7 caratteri va bene
Kasun Siyambalapitiya,

3
Nessuna lunghezza minima per l'hash di commit è di 4 caratteri (di nuovo, purché sia ​​unica nell'intero repository)
qwertzguy,

21

La capacità di ricerca si impegna è stata recentemente aggiunta a GitHub.

Per cercare un hash, inserisci almeno i primi 7 caratteri nella casella di ricerca. Quindi nella pagina dei risultati, fai clic sulla scheda "Commit" per visualizzare i commit corrispondenti (ma solo sul ramo predefinito, in genere master) o sulla scheda "Problemi" per visualizzare le richieste pull contenenti il ​​commit.

Per essere più espliciti puoi aggiungere il hash:prefisso alla ricerca, ma non è davvero necessario.

C'è anche un'API REST (al momento della scrittura è ancora in anteprima).


2
Sono sorpreso che funzioni davvero in questo modo. Non è così intuitivo. Per impostazione predefinita, Github mostrerà la scheda "Codice", senza ovviamente risultati. Per impostazione predefinita, non dovrebbe mostrare l'unica scheda che contiene dei risultati?
estivo

Quindi, per essere chiari, se hai la tua installazione aziendale di github, puoi trovare qualsiasi commit in qualsiasi repository cercandolo in questo modo: https://YourGithubDomain/search?q=YOUR_COMMIT_HASH&type=Commits Nota che ho provato anche su Github, e ha funzionato anche lì ad esempio https://github.com/search?q=38db172d13962ea177c00c9a3b4b3169b317e94b&type=Commits
Brad Parks
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.