2010-10-22 13 views
32

Pretend I si è ramificato dal mio ramo master a un ramo dell'argomento e quindi ho eseguito alcuni commit sul mio ramo dell'argomento. Esiste un comando che mi dice che l'hash del commit sul ramo principale da cui è originato il mio ramo argomento?git come trovare commit hash da dove il ramo ha avuto origine da

Idealmente, non avrei bisogno di sapere quanti commit ho fatto (cercando di evitare HEAD^5).

Ho cercato su Google e SO'd around e non riesco a trovare la risposta. Grazie!

+0

http://stackoverflow.com/questions/2706797/git-finding-what-branch-a-commit-came-from può essere un inizio, anche se non è * esattamente * la tua domanda. – VonC

+0

@VonC grazie per il link, non proprio quello che voglio ma è un buon inizio – brycemcd

risposta

32

utilizzare git merge-base master your-branch per trovare il miglior antenato comune tra due rami (in genere il punto di diramazione).

+23

@Bryce: si noti che se si eseguono alcune unioni intermedie, ciò fornirà l'antenato più recente, non necessariamente il primo punto di diramazione. – Cascabel

+0

Questo sembra non funzionare più. Ho appena ricevuto le informazioni di utilizzo: 'usage: git merge-base [-a | --all] ...'. Suppongo che l'aggiunta di "HEAD" al comando sopra possa dare la risposta giusta. –

+0

Esiste un'opzione per cortocircuito? git albero merge-base my_branch | git rev-parse --short HEAD –

54

È possibile utilizzare git reflog show --no-abbrev <branch name>. Sarà in uscita tutte le modifiche apportate al ramo, tra cui la sua creazione, per esempio (ho creato ramo xxx da master ramo):

bdbf21b087de5aa2e78a7d793e035d8bd9ec9629 [email protected]{0}: branch: Created from master 

Nota che questo non è molto affidabile come record reflog possono scadere (90 giorni per impostazione predefinita), e sembra che non ci sia un modo affidabile al 100% per farlo.

+0

Questa dovrebbe essere la risposta accettata. –

Problemi correlati