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 revert
seperti 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 bar
dan 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-parse
manual
<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>^0
berarti 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^2
c7256de, yaitu , masing-masing orang tua pertama dan kedua dari gabungan tersebut melakukan.
Hati-hati dengan git reset --hard
karena dapat menghancurkan pekerjaan.