Batalkan Penggabungan Git

119

Saya sedang mengerjakan proyek menggunakan Git sebagai VCS. Saya mendapat xyzpotongan cabang dari cabang utama master. Setelah bekerja untuk beberapa saat, saya melakukan kode saya dan menarik jalur utama cabang.

Tarikannya baik-baik saja. Saya kemudian menggabungkan kode dengan master. Setelah penggabungan, ada masalah pada file tertentu. Saya belum memasukkan kode setelah penggabungan. Dapatkah seseorang memandu bagaimana saya dapat membatalkan penggabungan ini dan membawa cabang saya di tempat saya bekerja saat ini ke keadaan sebelum saya menggabungkannya?

Salman Kazmi
sumber
Tidak bisakah Anda memulihkan komit sebelumnya dari cabang?
Wutipong Wongsakuldej
2
Kemungkinan duplikat dari Cara membatalkan git merge dengan konflik
Scott Weldon
1
Perhatikan bahwa di Git, revertadalah nama dari perintah yang membuat komit baru yang mengembalikan perubahan dalam komit sebelumnya, jadi itu mungkin bukan kata yang Anda cari di sini. Saya telah mengedit pertanyaan Anda untuk memperjelas.
Scott Weldon

Jawaban:

298

selama Anda tidak berkomitmen, Anda dapat mengetik

git merge --abort

seperti yang disarankan baris perintah.

Timothy Truckle
sumber
4
Saya mendapat pesan ini saat mencoba ini: error: Entry 'MyFile.java' not uptodate. Cannot merge. fatal: Could not reset index file to revision 'HEAD'.
SMBiggs
1
@Ahmad git tidak memulai penggabungan dengan perubahan yang tidak dilakukan (dari file yang sudah terlacak). git tidak bisa melindungi apa yang tidak diketahuinya.
Timothy Truckle
ya Anda saya mempelajarinya dengan kehilangan kode saya. berikut adalah detail masalah saya, bagaimana saya jatuh dalam masalah. stackoverflow.com/questions/55474092/how-to-undo-the-git-abort
Ahmad
23

Jika Anda melakukan "status git" saat mengalami konflik penggabungan, hal pertama yang ditunjukkan git kepada Anda adalah cara membatalkan penggabungan.

keluaran status git saat mengalami konflik penggabungan

MLY
sumber
Bagus, ini menyarankan saya untuk git reset HEAD <file>menghapus secara efektif "gabungan" yang dapat diciutkan dari kontrol sumber ekstensi git => lalu saya bisa menyelesaikan konflik atau hanya mengembalikan perubahan saya di daftar ekstensi GIT :)
jave.web
6

Sejujurnya ada banyak, banyak sumber yang menjelaskan bagaimana melakukan ini sudah di web:

Git: Bagaimana cara reverse-merge sebuah komit?

Git: Bagaimana cara reverse-merge sebuah komit?

Membatalkan Penggabungan , dari blog Git (diambil dari Mesin Wayback archive.org)

Jadi saya rasa saya akan merangkum beberapa di antaranya:

  1. git revert <merge commit hash>
    Ini membuat komitmen "pengembalian" ekstra yang mengatakan Anda membatalkan penggabungan

  2. git reset --hard <commit hash *before* the merge>
    Ini mengatur ulang sejarah sebelum Anda melakukan penggabungan. Jika Anda memiliki komit setelah penggabungan, Anda akan membutuhkannya cherry-picksetelah itu.

Tapi sejujurnya panduan ini di sini lebih baik dari apapun yang bisa saya jelaskan, dengan diagram! :)

denis.lobanov
sumber
1
Tautannya hilang. Mendesah.
SMBiggs
@ScottBiggs Saya pikir mereka memindahkannya ke git-scm.com/book/en/v2/… . Denis, jika Anda membaca ini, dapatkah Anda memeriksanya? Dan jika memang sama, dapatkah Anda mengupdate link di jawaban Anda? Terima kasih!
Fabio mengatakan Reinstate Monica