- Anda mulai mengubah berkas konfigurasi;
- Sebelum anda selesai membuat perubahan, rekan anda juga melakukan perubahan pada berkas konfigurasi tersebut. Tetapi karena perubahan yang dilakukan rekan hanya sedikit, dianya bisa langsung mengirimkan perubahan tersebut ke server sebelum anda;
- Sekarang saat anda mau mengirimkan perubahan yang anda lakukan akan muncul konflik dimana berkas dasar yang anda ubah bukan lagi berkas yang ada di server, karena sudah diubah oleh rekan anda;
- Karena Git tidak cukup cerdas untuk menggabungkan perubahan-perubahan ini maka Git akan akan menyerahkan tugas ini ke anda. Dimana Git akan: menggagalkan proses push anda dengan menampilkan pesan konflik, meminta anda untuk melakukan proses merge (=penggabungan), dan selesai digabungkan baru dicoba untuk di-push lagi.
Pesan konflik yang muncul saat anda push, kira-kira, akan seperti ini:
! [rejected] master -> master (non-fast-forward) error: failed to push some refs to '<alamat repository anda>' To prevent you from losing history, non-fast-forward updates were rejected Merge the remote changes (e.g. 'git pull') before pushing again. See the 'Note about fast-forwards' section of 'git push --help' for details.
Disini Git meminta anda untuk pull (=menarik) versi paling terkini dari server, gabungkan dengan perubahan yang anda lakukan, dan push hasil penggabungan ini. Untuk mengingkatkan kembali bagaimana melakukan proses-proses ini bisa membaca kembali saya sebelumnya.
Perhatikan pada saat anda melakukan proses pull, Git akan memberikan pesan kesalahan konflik lagi tetapi sekarang seperti ini:
Perhatikan pada saat anda melakukan proses pull, Git akan memberikan pesan kesalahan konflik lagi tetapi sekarang seperti ini:
5d0a41a..c53d73d master -> origin/master Auto-merging <nama berkas> CONFLICT (content): Merge conflict in <nama berkas> Automatic merge failed; fix conflicts and then commit the result.Dimana Git berusaha untuk menggabungkan berkas anda secara otomatis (=Auto-merging) tetapi gagal dan meminta anda untuk melakukannya. Untuk menandai mana saja yang menjadi masalah, Git akan menandai, pada berkas yang bermasalah, baris-baris yang mengalami konflik. Tandanya kira-kira seperti ini:
<<<<<<< HEAD Disini tulisan dari berkas anda sendiri ======= Disini tulisan dari berkas yang di server >>>>>>> c53d73dd7227d709d9064beb03f0b926aa6ad526
Perhatikan berkas asli anda tidak hilang dan akan disimpan dengan nama yang sama tetapi diberi akhiran .orig.
Cara paling mudah melakukan penggabungan ya langsung diubah berkas ini dan di-push lagi. Tetapi saya kadang-kadang bingung melihat apa yang perlu digabungkan apalagi kalau perubahannya banyak. Untuk mempermudah proses penggabungan ini saya memakai perangkat lunak Meld yang dapat menampilkan secara visual perbedaan-perbedaan dalam dokumen yang harus saya gabungkan.
Cara paling mudah melakukan penggabungan ya langsung diubah berkas ini dan di-push lagi. Tetapi saya kadang-kadang bingung melihat apa yang perlu digabungkan apalagi kalau perubahannya banyak. Untuk mempermudah proses penggabungan ini saya memakai perangkat lunak Meld yang dapat menampilkan secara visual perbedaan-perbedaan dalam dokumen yang harus saya gabungkan.
Meld
Meld merupakan aplikasi yang dapat mevisualisasikan perbedaan-perbedaan akibat perubahan pada suatu berkas. Cara instalasinya di Ubuntu 12.04 cukup sederhana yaitu dengan langkah:
sudo apt-get install meld
Proses Merge
Cara memakai Meld untuk membantu anda dalam proses penggabungan ini adalah dengan menjalankan perintah berikut:
Perhatikan layar sebelah kiri merupakan isi berkas anda, layar sebelah kanan isi berkas di server (tidak kelihatan pada gambar dibawah), dan layar ditengah adalah tempat penggabungan yang perubahannya anda harus lakukan sendiri. Setelah penggabungan selesai, tekan tombol Save untuk menyimpan perubahannya dan pilih menu Quit untuk keluar dari Meld.
Nah setelah selesai melakukan proses penggabungan ini baru perintah commit dan push bisa dijalankan lagi:
git mergetoolJika ada konflik yang harus ditangani maka git akan menanyakan apakah ingin menjalankan aplikasi Meld, jika iya tinggal tekan enter dan Meld akan dijalan dengan menampilkan berkas yang bermasalah dan yang menimbulkan konflik.
Perhatikan layar sebelah kiri merupakan isi berkas anda, layar sebelah kanan isi berkas di server (tidak kelihatan pada gambar dibawah), dan layar ditengah adalah tempat penggabungan yang perubahannya anda harus lakukan sendiri. Setelah penggabungan selesai, tekan tombol Save untuk menyimpan perubahannya dan pilih menu Quit untuk keluar dari Meld.
Nah setelah selesai melakukan proses penggabungan ini baru perintah commit dan push bisa dijalankan lagi:
git commit git push origin master
membantu sangat .. kami lagi belajar GIT ..
ReplyDeletemas klo masalah git nya seperti ini gmn mas ?
ReplyDeleteAn error occurred. Detailed message: An error was raised by libgit2. Category = 21 (MergeConflict).
1 uncommitted change would be overwritten by merge
cara mengetahui conflignya dimana gmn mas ?
Kemungkinan ada perubahan yang dilakukan belum di commit dan mas-nya coba merge. Comit dan push dulu perubahannya baru dilanjutkan dengan Merge.
Deletesip, makasih gan buat tutorialnya
ReplyDelete