Katakanlah orang lain membuat bar di atas foo, tetapi Anda menciptakan baz sementara itu dan kemudian bergabung, memberikan sejarah
$ git lola
* 2582152 (HEAD, master) Gabung cabang 'otherguy'
| \
| * bilah c7256de (otherguy)
* | b7e7176 baz
| /
* 9968f79 foo
Catatan: git lola adalah alias yang tidak standar tetapi bermanfaat.
Tidak ada dadu dengan git revert:
$ git mengembalikan KEPALA
fatal: Komit 2582152 ... adalah gabungan tetapi opsi -m tidak diberikan.
Charles Bailey memberikan jawaban yang sangat baik seperti biasa. Menggunakan git revertseperti pada
$ git revert --no-edit -m 1 KEPALA
[master e900aad] Kembalikan "Gabung cabang 'otherguy'"
0 file berubah, 0 sisipan (+), 0 penghapusan (-)
mode hapus 100644 bilah
secara efektif menghapus bardan menghasilkan riwayat
$ git lola
* e900aad (HEAD, master) Kembalikan "Gabung cabang 'otherguy'"
* 2582152 Gabung cabang 'otherguy'
| \
| * bilah c7256de (otherguy)
* | b7e7176 baz
| /
* 9968f79 foo
Tapi saya curiga Anda ingin membuang komit gabungan:
reset $ git --hard HEAD ^
KEPALA sekarang di b7e7176 baz
$ git lola
* b7e7176 (HEAD, master) baz
| * bilah c7256de (otherguy)
| /
* 9968f79 foo
Seperti yang didokumentasikan dalam git rev-parsemanual
<rev>^, misalnya HEAD ^,v1.5.1^0
Suffix ^ke parameter revisi berarti orangtua pertama dari objek komit itu. ^<n>berarti induk ke- n ( yaitu <rev>^ setara dengan <rev>^1). Sebagai aturan khusus, <rev>^0berarti komit itu sendiri dan digunakan ketika <rev>adalah nama objek dari objek tag yang merujuk ke objek komit.
jadi sebelum memanggil git reset, HEAD^(atau HEAD^1) adalah b7e7176 dan HEAD^2c7256de, yaitu , masing-masing orang tua pertama dan kedua dari gabungan tersebut melakukan.
Hati-hati dengan git reset --hardkarena dapat menghancurkan pekerjaan.