Jumat, 14 Oktober 2016
Pemateri: Herpiko Dwi Aguno
Pencatat: Raviyanto Ahmad
Kita keluar dari direktori puisi. Kita buat direktori baru.
$ mkdir konflik
$ cd konflik
$ git init
$ nano konflik1.txt
Isi berkas konflik1.txt dengan tiga baris kata.
Selamat
pagi
Bandung
Simpan, masukkan berkas dalam tempat penampungan, lalu sahkan. Pesan pengesahan bebas.
$ git add .
$ git commit -m "Pesan awal tentang konflik"
Sunting lagi berkasnya. Baris kedua ganti dengan kata siang .
Selamat
siang
Bandung
Simpan, tampung, dan sahkan.
$ git add .
$ git commit -m "Pesan kedua tentang konflik"
Sekarang dari git log kita punya dua pengesahan.
commit b66b046ac1867a17505f366a0cc4d6aa2b1b53fb
Author: Raviyanto Ahmad <raviyanto@gmail.com>
Date: Sat Nov 5 08:04:34 2016 +0700
Pesan kedua tentang konflik
commit a6c48c7eeef02f58b890c901478f4f280b6895bc
Author: Raviyanto Ahmad <raviyanto@gmail.com>
Date: Sat Nov 5 07:57:34 2016 +0700
Pesan awal tentang konflik
Kita pindah ke pengesahan pertama. Buat pencabangan baru. Namanya sore.
$ git checkout a6c4
$ git checkout -b sore
Sunting berkas. Baris kedua kita ganti dengan kata sore.
Selamat
sore
Bandung
Simpan, tampung, dan sahkan.
$ git add .
$ git commit -m "Ganti kata pagi dengan kata sore"
Di cabang sore ini kita punya dua pengesahan.
commit 32f53a391ab2cdf582b668e76493c1e99d5b3ae8
Author: Raviyanto Ahmad <raviyanto@gmail.com>
Date: Sat Nov 5 08:35:28 2016 +0700
Ganti kata pagi dengan kata sore
commit a6c48c7eeef02f58b890c901478f4f280b6895bc
Author: Raviyanto Ahmad <raviyanto@gmail.com>
Date: Sat Nov 5 07:57:34 2016 +0700
Pesan awal tentang konflik
Sekarang kita punya dua cabang–master dan sore. Masing-masing cabang punya dua pengesahan. Pengesahan pertama sama (nomor identitas master dan sore sama, yaitu a6c4 ). Pengesahan kedua berbeda (nomor identitas master: b66b dan nomor identitas sore: 32f5).
Konflik terjadi apabila ada baris yang sama tersunting oleh cabang yang berbeda. Seperti yang kita tahu tadi, baris kedua itu disunting oleh cabang yang berbeda. Tidak peduli penyuntingan itu dilakukan oleh jumlah pengesahan yang berbeda di masing-masing cabang.
Apabila ada perbedaan di baris yang sama, terjadi konflik. Apabila perubahannya berada di baris yang berbeda, tidak akan konflik. Git cukup pintar mendeteksi itu, tetapi tidak cukup pintar memutuskan, manakah yang benar: siang atau sore ?
Mari kita pindah ke cabang master, lalu kita gabungkan kedua cabang.
$ git checkout master
$ git merge sore
Apa yang terjadi?
Auto-merging konflik1.txt
CONFLICT (content): Merge conflict in konflik1.txt
Automatic merge failed; fix conflicts and then commit the result.
Terjadi konflik. Mari kita buka berkasnya dengan editor teks.
Selamat
<<<<<<< HEAD
siang
=======
sore
>>>>>>> sore
Bandung
Tugas kita adalah memilih mana yang benar. Kita singkirkan yang salah. Misal yang benar adalah kata sore yang berada di bawah tanda ===. Kita singkirkan tanda-tanda dan kata yang salah.
<<<<<<< HEAD
siang
=======
>>>>>>> sore
Hasil penyuntingannya sebagai berikut.
Selamat
sore
Bandung
Kita simpan berkasnya, tampung, lalu sahkan. Lihat status direktori kerja kita dengan git status.
On branch master
nothing to commit, working directory clean
Nah, konflik terselesaikan.