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 revert
come 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 bar
e 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-parse
manuale
<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>^0
indica 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^2
era c7256de, cioè rispettivamente il primo e il secondo genitore del commit di merge.
Fai attenzione git reset --hard
perché può distruggere il lavoro.