Saya sangat baru mengenal git dan bertanya-tanya bagaimana saya harus melakukan penggabungan di mana di repo lokal saya telah menghapus beberapa file di cabang master tetapi file ini ada di dalam cabang master jarak jauh.
Setelah melakukan git-merge terlihat konflik-konflik yang terjadi.
Menggunakan git gui ini menunjukkan bahwa file lokal dihapus, sedangkan file cabang jarak jauh memiliki konten.
Bagaimana Anda menghentikan file-file ini dari konflik? Apakah ada cara sederhana menggunakan git gui?
Terimakasih banyak
Jawaban:
Anda harus menyelesaikan konflik sesuai keinginan Anda. Jika file benar-benar seharusnya dihapus, dan Anda akan menerbitkan perubahan itu ke asalnya, hapus lagi:
Jika file masih harus dilacak, tambahkan (versi di pohon kerja akan menjadi versi dari asal):
Setelah melakukan salah satu cara untuk menyelesaikan konflik, lakukan penggabungan.
sumber
cd
ke direktori, dangit rm *.ext
. Shell Anda (bukan Git) meluas*.ext
ke semua nama file yang cocok.git rm
tidak memiliki-i
bendera.git rm *-suffix.ext
? Perbedaan yang sama. Jika Anda mengalami masalah dalam mencari cara menggunakan shell wildcard, tanyakan di unix.stackexchange.com. Jika Anda mengetahui fakta bahwa apa yang Anda inginkan tidak dapat dilakukan dengan globbing, gunakanrm -i
dan ikutigit add -u
untuk mengambil penghapusan.-s recursive -X ours
, mengapa masih perlugit rm
dangit add
?Sebagai tip tambahan selain jawaban yang diterima, dalam "dihapus oleh kami" , jika Anda ingin melihat perubahan yang dibuat pada file yang dihapus sehingga Anda dapat menerapkan perubahan tersebut di tempat lain yang dapat Anda gunakan:
Jika ini adalah skenario "dihapus oleh mereka" , dan Anda ingin melihat perubahan sehingga Anda dapat menerapkannya di tempat lain, Anda dapat menggunakan:
sumber
git diff mybranch@{1}...origin/master -- path/to/file
git diff --base
(lihat jawaban saya yang lain).Di Git GUI, Anda memilih file yang konflik dan kemudian klik kanan pada area teks utama tempat teks yang berkonflik ditampilkan.
Dalam menu konteks yang muncul, Anda dapat memilih untuk menggunakan "Remote" atau menggunakan "Lokal". Jadi jika file dihapus dari jarak jauh, Anda dapat memilih "Remote" untuk menyebarkan penghapusan secara lokal, dan sebaliknya.
Butuh waktu sebulan untuk mengetahuinya ... alangkah baiknya jika GUI GUI benar-benar memiliki dokumentasi ...
sumber
Jawaban dengan peringkat terbaik berfokus pada cara menyelesaikan konflik.
Sebelum itu, Anda mungkin ingin tahu apa yang diubah remote pada file yang dihapus secara lokal.
Untuk melakukan itu, Anda dapat melihat perubahannya dengan:
Dari https://git-scm.com/docs/git-diff#Documentation/git-diff.txt--1--base
sumber
git diff --base
stackoverflow.com/a/60484874/470749Di EGit saya juga menemukan masalah. Solusi saya adalah:
sumber
Seperti yang dinyatakan dalam jawaban yang berguna untuk pertanyaan terkait ini , Anda dapat menggunakan
git mergetool
untuk memulai dialog di mana Anda dapat memilih apakah Anda ingin mengambil versi file yang dimodifikasi atau dihapus.sumber