Git membatalkan upaya penggabungan

90

Saya memiliki direktori kerja (# 1) yang memiliki direktori vendor (# 2) di dalamnya. Ada satu ketergantungan yang ingin saya tarik secara manual tanpa komposer (versi php dari npm / gem). Saya bekerja di # 1, belum menyimpan / melakukan perubahan, ketika saya memutuskan saya ingin memperbarui perpustakaan di # 2. Saya menavigasi ke vendor / myname, dan melakukan repositori git pull.

Sayangnya itu mulai menarik dan bergabung ke # 1, alih-alih membuat direktori baru di folder vendor.

Sekarang saya punya:

  • Folder # 1 dengan perubahan saya
  • Folder # 1 dengan file yang tidak saya inginkan dari repositori yang salah
  • # 1 menggabungkan konflik seperti composer.json, Readme.md ... (file umum)

Saya ingin "membatalkan" git pull terakhir ini tanpa kehilangan perubahan apa pun yang saya lakukan ke folder # 1. Bagaimana saya bisa melakukan ini?

ewooycom
sumber
Git mencegah penarikan atau penggabungan jika ada perubahan yang tidak dilakukan, apakah Anda yakin ini yang terjadi?
CharlesB
1
@CharlesB Penggabungan dibatalkan, proyek tidak digabungkan dengan jet. Saya tidak tahu apa-apa tentang pencegahan git sebelum penarikan ...
ewooycom

Jawaban:

170

git merge --abort mungkin yang Anda cari.

aragaer
sumber
6
Dalam versi git yang lebih lama: git reset --merge
razz0
Ini berhasil, tetapi tidak memberi tahu Anda apa-apa. Lakukan git statusuntuk konfirmasi.
aliteralmind
17

Git Modern:

git merge --abort

Lebih tua:

git reset --merge

Sekolah tua (peringatan: akan membuang semua perubahan lokal Anda):

git reset --hard

Tapi sebenarnya, perlu diperhatikan bahwa git merge --aborthanya setara dengan git reset --mergeyang MERGE_HEADada. Ini bisa dibaca di git help for merge command.

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

Setelah penggabungan yang gagal, jika tidak ada MERGE_HEAD, penggabungan yang gagal dapat dibatalkan dengan git reset --mergetetapi tidak harus dengan git merge --abort, jadi mereka tidak hanya sintaks lama dan baru untuk hal yang sama . Secara pribadi saya merasa git reset --mergejauh lebih berguna dalam pekerjaan sehari-hari.

Martin G
sumber
2

Dengan Git 2.10 (Q3 2016), Anda akan tahu apa yang harus dilakukan, karena git statusakan mengusulkan git merge --abortopsi.

Lihat commit b0a61ab (21 Jul 2016) oleh Matthieu Moy ( moy) .
(Digabung oleh Junio ​​C Hamano - gitster- di commit 5a2f4d3 , 03 Agustus 2016)

status: sarankan ' git merge --abort' jika sesuai

Kami sudah menyarankan ' git rebase --abort' selama rebase yang konflik.
Demikian pula, sarankan ' git merge --abort' selama resolusi konflik di ' git merge'.

VonC
sumber