2013-01-04 7 views
18

stavo controllando la X si impegna con il seguente comando:Il tuo ramo è più avanti di "origine/padrone" con X commit. Come trovare la X commessa?

git log --author=<my-name> -<X> 

Ma il problema è che ho accidentalmente tirato codice da un altro repository e aggiunto i commit dal repository al mio repository git locale.

Quindi non posso utilizzare il comando precedente poiché il nuovo commit contiene altri autori.

+1

se la vostra copia di lavoro è pulito (nessuna modifica non impegnati) si può tornare allo stato precedente di tiro con http://stackoverflow.com/q/1223354/11343 – CharlesB

+0

@CharlesB "git reset --hard" non prenderà lo stato prima di tirare. Il messaggio è ancora in arrivo. –

+1

è necessario trovare l'hash di commit del commit estratto prima di estrarlo e passarlo a 'reset --hard', leggere la domanda che ho rinviato allo – CharlesB

risposta

27

Il comando

git log origin/master..master 

mostra i commit che sono sul master ma non su origin/master.

+0

Non mostrerà il commit. Mostra alcuni commit esistenti nel mio repository locale e nel mio repository remoto. –

+0

Forse ho frainteso la tua domanda allora ... – tobiasbayer

+0

Accettando la risposta in base ai voti che hai ottenuto: D –

-1

Io uso questo:

git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative 

Essa mostra impegna come un grafico, con tutti i rami ei loro nomi.

Il mio consiglio è quello di creare alias per esso in ~/.gitconfig

+0

Penso che contenga i commit. Ma mostra troppe informazioni. Come può identificare X Commits da esso? –

+0

Si può ovviamente aggiungere '--author = - ' ad esso. O non è quello che volevi? – amorfis

2

ho fatto un alias per il comando che elenca i commit che non sono stati spinti.

git log --branches --non --remotes --decorate --oneline

che è una variante di un cxreg comando ha postato in Viewing Unpushed Git Commits.

Un sacco di altri modi utili per analizzare l'albero di commit in quel post.

1

La notazione treeish..treeish funziona esattamente per vedere i commit presenti nel secondo riferimento, ma non nel primo. Dalla aiuto git log:

Un D..M regolare calcola l'insieme di commit che sono gli antenati di M, ma esclude quelli che sono gli antenati di D. Questo è utile per vedere cosa è successo al protagonista della storia a M da D, nel senso che "cosa ha M che non esisteva in D".

Usando questo sia con git log o git show è possibile emettere un elenco che contiene una sola riga per ogni impegnarsi pressent nel D..M differenza:

git show -s --oneline branch..HEAD 

o

git log --oneline branch..HEAD 

Coppia che, con un conteggio delle parole e puoi produrre esattamente il numero di commit che stai cercando:

git log --oneline branch..HEAD | wc -l 
+0

Ho provato i comandi sopra. Non ho alcun risultato. –

+0

Se non si ottengono errori e 'show/log' come la precedente non stampa nulla, vuol dire che, supponendo' A..B', 'B' contiene già tutti i commit in' A', e questo lì non si impegna a stampare. Prova a capovolgerlo o provalo con un paio di commit di cui sei certo della differenza. Ad esempio, se provi con 'HEAD^.. HEAD', devi visualizzare un singolo commit. – LopSae

+0

I commenti sopra citati confrontano solo con il repository locale. come confrontare con repo remoto? –

Problemi correlati