Dì che l'altro ragazzo ha creato la barra in cima a foo, ma nel frattempo hai creato baz e poi ti sei unito, dando una storia di
$ git lola
* 2582152 (HEAD, master) Unisci ramo 'altro guy'
| \
| * barra c7256de (altro guy)
* | b7e7176 baz
| /
* 9968f79 foo
Nota: git lola è un alias non standard ma utile.
Nessun dado con git revert:
$ git ripristina HEAD
fatale: Commit 2582152 ... è un'unione ma non è stata data l'opzione -m.
Charles Bailey ha dato una risposta eccellente come al solito. Usando git revertcome in
$ git revert --no-edit -m 1 HEAD
[master e900aad] Ripristina "Unisci ramo 'altro guy'"
0 file modificati, 0 inserzioni (+), 0 eliminazioni (-)
modalità di eliminazione 100644 bar
cancella efficacemente bare produce una storia di
$ git lola
* e900aad (HEAD, master) Ripristina "Unisci ramo 'altro guy'"
* 2582152 Unisci ramo 'altro guy'
| \
| * barra c7256de (altro guy)
* | b7e7176 baz
| /
* 9968f79 foo
Ma sospetto che tu voglia buttare via il commit della fusione:
$ git reset --hard HEAD ^
HEAD è ora su b7e7176 baz
$ git lola
* b7e7176 (HEAD, master) baz
| * barra c7256de (altro guy)
| /
* 9968f79 foo
Come documentato nel git rev-parsemanuale
<rev>^, ad esempio HEAD ^,v1.5.1^0
un suffisso ^per un parametro di revisione indica il primo genitore dell'oggetto commit. ^<n>indica l' n -esimo genitore ( cioè <rev>^ equivale a <rev>^1). Come regola speciale, <rev>^0indica il commit stesso e viene utilizzato quando <rev>è il nome oggetto di un oggetto tag che fa riferimento a un oggetto commit.
così prima di invocare git reset, HEAD^(o HEAD^1) era b7e7176 ed HEAD^2era c7256de, cioè rispettivamente il primo e il secondo genitore del commit di merge.
Fai attenzione git reset --hardperché può distruggere il lavoro.