Cara membatalkan git bergabung dengan konflik

785

Saya di cabang mybranch1. diambil mybranch2dari mybranch1dan perubahan dilakukan pada mybranch2.

Kemudian, sementara pada mybranch1, saya telah melakukan git merge --no-commit mybranch2 itu. Menunjukkan ada konflik saat penggabungan.

Sekarang saya ingin membuang semuanya ( mergeperintah) agar mybranch1kembali seperti semula. Saya tidak tahu bagaimana cara melakukannya.

Anshul
sumber

Jawaban:

1355

Git terbaru:

git merge --abort

Upaya ini untuk mengatur ulang copy pekerjaan Anda ke status apa pun itu sebelum penggabungan. Itu berarti bahwa ia harus mengembalikan perubahan yang tidak dikomit dari sebelum penggabungan, meskipun tidak selalu dapat diandalkan. Biasanya Anda tidak boleh bergabung dengan perubahan yang tidak dikomit.

Sebelum versi 1.7.4:

git reset --merge

Ini sintaks yang lebih lama tetapi melakukan hal yang sama seperti di atas.

Sebelum versi 1.6.2:

git reset --hard

yang menghapus semua perubahan yang tidak dikomit, termasuk gabungan yang tidak berkomitmen. Terkadang perilaku ini berguna bahkan di versi Git yang lebih baru yang mendukung perintah di atas.

Daniel Cassidy
sumber
1
Tetapi untuk versi git yang lebih lama, ini adalah cara untuk menggunakannya
Anshul
7
Kadang-kadang Anda masih perlu menggunakan git reset --mergebahkan dalam versi yang lebih baru. Saya mengalami git merge --abortkesalahan (tidak membuat perubahan) ketika git reset --mergeberhasil (dan melakukan hal yang benar) di git 2.2.1.
Theodore Murdock
Saya menemukan saya perlu lakukan git merge --abortdiikuti oleh git reset --mergeketika memiliki konflik muncul otomatis dari simpanan saya.
Chef Firaun
1
biasanya git merge --abortbekerja untuk saya, tetapi saya menemukan diri saya dalam situasi di mana saya memeriksa dalam keadaan KEPALA terpisah, dan salah satu file saya memiliki keadaan "keduanya dimodifikasi". Aku ingin membuang segala sesuatu dan kembali ke cabang, saya harus git reset --hard, git merge --abortmengatakan kepada saya tidak ada merge untuk batalkan, (MERGE_HEAD hilang).
yano
Terkadang git merge --aborttidak dapat mengembalikan kondisi Anda sebelumnya, dan dalam kasus itu "sintaks lama" berhasil git reset --hard.
Kevin Stewart
130

Sebenarnya, perlu diperhatikan bahwa git merge --aborthanya setara dengan yang git reset --mergediberikan yang MERGE_HEADhadir. Ini bisa dibaca di git help untuk menggabungkan perintah.

git merge --abort # is equivalent to git reset --merge when MERGE_HEAD is present.

Setelah penggabungan yang gagal, ketika tidak ada MERGE_HEAD, penggabungan yang gagal dapat dibatalkan dengan git reset --mergetetapi tidak harus dengan git merge --abort, sehingga mereka tidak hanya sintaks lama dan baru untuk hal yang sama .

Secara pribadi saya menemukan git reset --mergejauh lebih berguna dalam pekerjaan sehari-hari.

Martin G
sumber
2
Terima kasih, info ini sangat membantu. Saya memiliki penggabungan yang dimulai dengan git stash applycabang yang salah, dan git merge --aborttidak melakukan apa pun (tidak MERGE_HEAD), saat git reset --mergemelakukan trik.
geomaster
4
Saya telah melihat sekitar 10 orang yang mengatakan git merge --abortadalah perintah baru untuk git reset --mergedan saya mengalami masalah yang sama dengan @geomaster ini sangat membantu, terima kasih!
Tom
106

Dengan asumsi Anda menggunakan git terbaru,

git merge --abort
Adam Dymitruk
sumber
Ok ini tidak bekerja dengan 1.7.0.7 :(. Harus menggunakan reset --Bertama dengannya
Anshul
5

Ada dua hal yang dapat Anda lakukan pertama kali membatalkan penggabungan dengan perintah

git merge --abort

atau

Anda dapat pergi ke negara komit sebelumnya untuk sementara dengan perintah

git checkout 0d1d7fc32 
Manish Kumar Singh
sumber
0

Sourcetree

Jika Anda tidak melakukan penggabungan, maka cukup klik dua kali pada cabang lain (= checkout) dan ketika sourcetree bertanya kepada Anda tentang membuang semua perubahan maka setujui

Kamil Kiełczewski
sumber