2013-03-21 16 views
8

Voglio scoprire l'ultima cosa che ho spinto, non l'ultima cosa che ho commesso, ma spinto.Git scoprire l'ultimo commit che ho spinto

Esiste un comando git per questo?

Contesto: voglio schiacciare alcuni commit prima di fondersi mia dev_branch con un ramo maestro, ma mi è stato detto che non è possibile rebase tutto ciò che è già spinto (è vero?).

Quindi mi piacerebbe sapere quale è stato l'ultimo commit che non posso includere in questo rebase.

risposta

24

Se vuoi dire l'ultima commit hai spinto al ramo master quindi, supponendo che il telecomando è origin:

git rev-parse origin/master 

Questo ti mostrerà l'ID della punta del ramo master dell'origine origin commit, come il tuo repository locale è al momento consapevole. Ciò può significare che il commit è il commit di qualcun altro, se qualcun altro ha fatto commit di commit dopo che l'hai fatto e tu da quel fetch ed il ramo.

git show -p origin/master 

Questo comando vi darà informazioni sulla commit, compreso l'ID commettere, autore, registrare il messaggio, e diff per commettere suo genitore (s).


Uno dei miei Git preferito comandi per fare esattamente questo tipo di ispezione:

git log --pretty=oneline --abbrev-commit --graph --decorate --all 

Viene mostrato un bel grafico ASCII-art della storia impegnarsi, e ogni commit mostrerà eventuali arbitri che lo stanno prendendo di mira. In questo modo è possibile, con una sola occhiata, vedere le diramazioni e le fusioni nella cronologia e vedere facilmente dove origin/master è in relazione al proprio master.

+0

wow grazie cdhowie che l'ultimo comando è fantastico, è davvero utile! Probabilmente dovrei chiedere questo in una domanda separata, ma quello che è considerato migliore -git REBASE -i -git unire --squash Quello che voglio fare, è unire il mio ramo dev con il maestro, ma il mio 100 + commmits compressi in dire 4. Non 1, poiché ci sono probabilmente 4 punti chiave nella sua storia – chrispepper1989

+2

Se hai spinto il tuo ramo dev, allora schiacciarlo è una cattiva idea, dato che gli altri sarebbero stati liberi di abbandonare il tuo lavoro. Se è pubblico, non cambiarlo. Se non è pubblico allora 'git rebase -i' ti consente di scegliere quali commit distinti vuoi conservare nella cronologia e quali vuoi schiacciarli. 'git merge --squash' ti darà solo la possibilità di creare un commit, quindi alla fine dipende da quanti oggetti di commit vuoi. – cdhowie