Saya menjalankan sebuah git pull
yang berakhir dengan konflik. Saya menyelesaikan konflik dan semuanya baik-baik saja sekarang (saya menggunakan mergetool juga).
Ketika saya melakukan file yang diselesaikan dengan git commit file.php -m "message"
saya mendapatkan kesalahan:
fatal: cannot do a partial commit during a merge.
Saya memiliki masalah yang sama sebelumnya dan menggunakan -a
di komit bekerja dengan sempurna. Saya pikir itu bukan cara yang sempurna karena saya tidak ingin melakukan semua perubahan. Saya ingin mengkomit file secara terpisah dengan komentar yang terpisah. Bagaimana saya bisa melakukan itu? Mengapa git tidak mengizinkan pengguna untuk melakukan file secara terpisah setelah penggabungan? Saya tidak dapat menemukan jawaban yang memuaskan untuk masalah ini.
Jawaban:
Saya menemukan bahwa menambahkan "-i" ke komit memperbaiki masalah ini untuk saya. -I pada dasarnya memberitahu file stage tambahan sebelum melakukan. Itu adalah:
sumber
Stage additional files
artinyagit add
, yang membuatgit commit
gagal. Menambahkan-i
akan memberitahu git untuk menambahkan dan melakukan pada saat yang sama. Saya masih tidak yakin mengapa tetapi tampaknya masuk akal.Ini berhasil untuk saya. Anda dapat mencoba ini juga.
sumber
Anda dapat menggunakan
git commit -i
sebagian besar kasus tetapi jika tidak berhasilYang perlu Anda lakukan
git commit -m "your_merge_message"
. Selama konflik penggabungan, Anda tidak dapat menggabungkan satu file tunggal sehingga Anda perlugit add your_file.txt
)git commit -m "your_merge_message"
sumber
Anda mungkin mengalami konflik dalam sesuatu yang belum Anda lakukan untuk komitmen. git tidak akan membiarkan Anda melakukan hal-hal secara mandiri (karena itu semua bagian dari penggabungan, saya kira), jadi Anda perlu ke
git add
file itu dan kemudiangit commit -m "Merge conflict resolution"
. The-i
bendera untukgit commit
melakukan add untuk Anda.sumber
commit -i
dikerjakan, tapi tidakgit add; git commit
Saya mendapatkan ini ketika saya lupa
-m
komit git saya ketika menyelesaikan konflik git merge.seharusnya
sumber
Seperti pesan kesalahan mengatakan Anda tidak dapat melakukan sebagian komitmen setelah penggabungan. Alih-alih melakukan hanya
file.php
Anda harus melakukan semua perubahan.Ini seharusnya bekerja.
sumber
Penggabungan Anda berhenti di tengah tindakan. Anda harus menambahkan file Anda, dan kemudian 'git commit':
git add file_1.php file_2.php file_3.php git commit
Bersulang
sumber
Jika Anda hanya ingin parit memetik seluruh ceri dan melakukan file dalam set apa pun yang Anda inginkan,
membuat kamu di sana.
Soft reset apa yang dilakukan adalah memindahkan pointer yang menunjuk ke HEAD saat ini ke commit (ish) yang Anda berikan tetapi tidak mengubah file. Reset keras akan memindahkan pointer dan juga mengembalikan semua file ke status dalam komit itu (ish). Ini berarti dengan soft reset Anda dapat menghapus status penggabungan tetapi menyimpan perubahan pada file aktual dan kemudian komit atau reset masing-masing secara individual sesuai keinginan Anda.
sumber
sumber
Bagi saya ini terjadi di SourceTree ketika saya mencoba melakukan gabungan sebelum menyelesaikan semua file. Saya kemudian menandai file terakhir diselesaikan dan masih memberi saya kesalahan ini ketika mencoba melakukan. Saya menutup SourceTree dan membukanya kembali, lalu melakukannya dengan baik.
sumber
Saya memecahkan ini dengan pendekatan yang sama sekali berbeda, hanya menggunakan Kontrol Sumber Xcode.
Latar Belakang: Tim lain Mendorong perubahan pada repositori Git jarak jauh (melalui Beanstalk). Pada akhirnya, file .xcodeproj berada di bawah direktori yang berbeda, dan perubahan tidak terjadi. Kemudian, ketika saya mencoba melakukan, saya menerima kesalahan Tree Conflict di Xcode.
Menjadi hampir mustahil untuk dikoreksi menggunakan Xcode, saya mengganti
.xcodeproj
file dengan versi yang diunduh dari server Git. Hasilnya ... proyek Xcode tampak jelas, namun semua pembaruan dari Pull yang korup muncul sebagai perubahan yang saya buat dan diatur untuk Komit.Namun ketika mencoba Berkomitmen, saya menerima kesalahan "fatal: tidak dapat melakukan sebagian komitmen saat penggabungan", dibahas di sini.
Inilah cara saya memecahkan masalah ... (Sekarang, pahami bahwa saya seorang programmer pemula, jadi saya bisa kurang mengerti ... tapi ketidaktahuan saya membuat saya menemukan cara lain untuk melakukan ini.) Pertama, saya Mengkloning master saya Cabang menjadi Cabang sekunder dan beralih ke cabang itu. Kemudian saya membuat Copy Pekerjaan dan menempatkan direktori ke copy pekerjaan di luar direktori proyek asli. (Saya tidak tahu apakah ini perlu, tetapi ini yang saya lakukan ketika saya membaca teknik pemecahan masalah lainnya.) Kemudian saya beralih cabang ke master, di mana saya menyadari semua file Staged saya (perubahan ke Commit) hilang. Untuk memastikan semua file diperbarui ke perubahan terbaru yang dibuat oleh pihak lain, saya membuat cabang baru bernama ThirdBranch, yang menggandakan semua file, Mendorongnya ke Git Server dan membiarkan Beanstalk membandingkan versi server saya dari cabang master ke cabang ThirdBrach yang baru saja saya Dorong (baris demi baris), dan semua perubahan oleh pihak lain ada di Xcode saya. Ini berarti bahwa repositori master saya dan repositori master Git adalah sama, yang memverifikasi bahwa saya menyelesaikan masalah menggunakan Xcode, hanya.
Jangan tanya saya bagaimana, melampaui apa yang baru saja saya jelaskan ... dan tentu saja mengisi kekosongan yang saya tinggalkan. Saya baru dalam hal ini dan saya tidak mengerti segalanya. Mungkin seorang programmer yang berpengalaman dapat memisahkan informasi yang tidak relevan dari yang relevan dan menciptakan kembali teknik ini dengan lebih jelas, yang merupakan sebagian alasan saya memposting ini.
Ini adalah jawaban rangkap untuk pertanyaan rangkap seperti di: Gagal Xcode Git Merge macet
sumber
Selama penggabungan, Git ingin melacak cabang induk dengan segala macam alasan. Apa yang ingin Anda lakukan bukanlah penggabungan seperti yang dilihat git. Anda mungkin ingin melakukan rebase atau memilih-ceri secara manual.
sumber
git commit -i -m 'merge message'
tidak bekerja untuk saya. Itu berkata:fatal: No paths with --include/--only does not make sense.
FWIW, saya tiba di sini melalui pertanyaan terkait ini karena saya menerima pesan ini:
fatal: You have not concluded your merge (MERGE_HEAD exists).
Saya juga mencoba mergetool, yang mengatakan
No files need merging
. Sangat membingungkan! Jadi MERGE_HEAD tidak ada dalam file yang perlu digabung- ??Akhirnya, saya menggunakan trik ini untuk menambahkan hanya file yang dimodifikasi (tidak ingin menambahkan semua file di pohon saya, karena saya punya beberapa yang saya ingin tetap tidak terlacak):
git ls-files -m | xargs git add
Kemudian saya akhirnya (!) Dapat berkomitmen dan mendorong. Tentu akan lebih baik jika git memberi Anda petunjuk yang lebih baik tentang apa yang harus dilakukan dalam situasi ini.
sumber
Jika ada di Source Tree , kita harus secara eksplisit menandai file sebagai diselesaikan setelah konflik diselesaikan. Pilih file yang baru saja diselesaikan tanpa konflik. Kemudian Tindakan -> Selesaikan Konflik -> Tandai Terselesaikan . Jika Anda memiliki banyak file, lakukan hal yang sama untuk semua. Komit sekarang.
sumber
Setelah membaca semua komentar. ini adalah resolusi saya:
saya harus "Tambahkan" lagi daripada melakukan:
sumber
Jika Anda menggunakan pohon Sumber atau GUI lain, pastikan semua file diperiksa (setelah digabung).
sumber
Terkadang saat penggabungan, jika konflik muncul dan ada delta yang membutuhkan resolusi manual. Dalam kasus tersebut, perbaiki resolusi manual untuk file yang disebutkan.
Sekarang jika Anda mengeluarkan,
Anda akan melihat output seperti
Karena, Anda sudah melakukan komit, Anda hanya perlu mengeluarkan
Dan komit Anda akan dilakukan tanpa masalah.
sumber