Tutorial Git #7: Menggunakan Percabangan untuk Mencegah Konflik

Bayangkan anda sedang bekerja dengan tim pada suatu repositori Git. Repositori ini dikerjakan secara bersama-sama.

Kadang… akan terjadi konflik, karena kode yang kita tulis berbeda dengan yang lain.

Misalnya, Si A menulis kode untuk fitur X dengan algoritma yang ia ketahui. Sedangkan si B menulis dengan algoritma yang berbeda.

Lalu mereka melakukan commit, dan kode sumber jadi berantakan. Anggota tim yang lain menjadi pusing.

Petani Kode

Sistem Git

Agar tidak terjadi hal yang seperti ini, kita harus membuat cabang (branch) tersendiri.

Misalnya, si A akan mengerjakan fitur X, maka dia harus membuat cabang sendiri. Si A akan bebas melakukan apapun di cabangnya tanpa mengganggu cabang utama (master).

Cara Membuat Cabang Baru

Perintah untuk membuat cabang adalah git branch, kemudian diikuti dengan nama cabangnya.

Contoh:

BASH
git branch fitur_register
Klik untuk membuka dan melihat lebih banyak

Maka Git akan membuat cabang bernama fitur_register.

Petani Kode

Sistem Git

Sekarang setiap orang memiliki cabangnya masing-masing. Mereka bebas bereksperimen.

Untuk melihat cabang apa saja yang ada di repositori, gunakan perintah git branch.

Contoh:

BASH
$ git branch
  halaman_login
* master
Klik untuk membuka dan melihat lebih banyak

Tanda bintang (*) artinya cabang yang sedang aktif atau Kita sedang berada di sana.

Latihan

Untuk memantapkan pemahaman tentang percabangan Git, mari kita coba praktik.

Pada repositori, buatlah sebuah cabang baru.

BASH
git branch halaman_login
Klik untuk membuka dan melihat lebih banyak

Setelah itu, pindah ke cabng yang baru saja kita buat dengan perintah:

BASH
git checkout halaman_login
Klik untuk membuka dan melihat lebih banyak

Lalu tambhakan file login.html, isinya terserah anda.

Petani Kode

Sistem Git

Kita sudah menambahkan file login.html. Selanjutnya kita lakukan commit.

BASH
git add login.html
git commit -m "membuat file login.html"
Klik untuk membuka dan melihat lebih banyak

Bagus! revisi kita pada cabang halaman_login sudah disimpan. Sekarang coba kembali ke cabang master.

BASH
git checkout master
Klik untuk membuka dan melihat lebih banyak

Apakah anda menemukan file login.html?

Pasti Tidak!

Sekarang kembali lagi kecabang halam_login.

BASH
git checkout halaman_login
Klik untuk membuka dan melihat lebih banyak

Cek lagi, apakah sekarang file login.html sudah ada?

YAML
project-01/
├── index.html
└── login.html
Klik untuk membuka dan melihat lebih banyak

Ternyata ada. Yep! kita bisa mengambil kesimpulan, kalau perubahan pada cabang halaman_login tidak akan berpengaruh di cabang master.

Menggabukan Cabang

Anggaplah kita sudah selesai membuat fitur login di cabang halaman_login. Sekarang kita ingin Menggabungkannya dengan cabang master (utama).

Pertama, kita harus pindah dulu ke cabang master.

BASH
git checkout master
Klik untuk membuka dan melihat lebih banyak

Setelah itu, barulah kita bisa menggabungkan dengan perintah git merge.

BASH
git merger halaman_login
Klik untuk membuka dan melihat lebih banyak

Sekarang lihat, file login.html sudah ada di cabang master.

Petani Kode

Sistem Git

Hati-hati! kadang sering terjadi bentrok ketika menggabungkan cabang.

Mengatasi Bentrok

Bentrok biasanya terjadi jika ada dua orang yang mengedit file yang sama.

Kenapa bisa begitu, ‘kan mereka sudah punya cabang masing-masing?

Bisa jadi, di cabang yang mereka kerjakan ada file yang sama dengan cabang lain. Kemudian, saat digabungkan terjadi bentrok.

Mengatasi bentrok adalah tugas dari pemilik atau pengelola repositori. Dia harus bertindak adil, kode mana yang harus diambil.

Biasanya akan ada proses diskusi dulu dalam mengambil keputusan.

Baiklah, sekarang kita akan coba membuat bentrokan 😄.

Pindah dulu ke branch halaman_login…

BASH
git checkout halaman_login
Klik untuk membuka dan melihat lebih banyak

Setela itu, edit file login.html atau index.html, karena kedua file tersebut ada di kedua cabang yang akan kita gabungkan.

DIFF
$ git diff
diff --git a/login.html b/login.html
index 23a3f5c..eea5658 100644
--- a/login.html
+++ b/login.html
@@ -1 +1 @@
-di sini berisi kode untuk halaman login
+<p>di sini berisi kode untuk halaman login<p>
Klik untuk membuka dan melihat lebih banyak

Setelah itu, lakukan commit lagi:

BASH
git add login.html
git commit -m "ubah isi login.html"
Klik untuk membuka dan melihat lebih banyak

Selanjutnya pindah ke cabang master dan lakukan perubahan juga di cabang ini. Ubah file yang sama seperti di cabang halaman_login.

Setelah itu, lakukan commit di cabang master

BASH
git add login.html
git commit -m "ubah isi login.html di cabang master"
Klik untuk membuka dan melihat lebih banyak

Terakhir, coba gabungkan cabang halaman_login dengan cabang master, maka akan terjadi bentrok.

BASH
$ git merge halaman_login
Auto-merging login.html
CONFLICT (content): Merge conflict in login.html
Automatic merge failed; fix conflicts and then commit the result.
Klik untuk membuka dan melihat lebih banyak

Nah, kita disuruh perbaiki kode yang bentrok. Sekarang buka login.html dengan teks editor.

Petani Kode

Sistem Git

Kedua kode cabang dipisahkan dengan tanda ======. Sekarang.. tugas kita adalah memperbaikinya.

Silakan eliminasi salah satu dari kode tersebut.

Petani Kode

Sistem Git

Setelah itu lakukan commit untuk menyimpan perubahan ini.

BASH
git add login.html
git commit -m "perbaiki konflik"
Klik untuk membuka dan melihat lebih banyak

Bagus! bentrokan antar ormas programmer sudah beres 😄.

Menghapus Cabang

Cabang yang sudah mati atau tidak ada pengembangan lagi, sebaiknya dihapus.

Agar repositori kita bersih dan rapi.

Cara menghapus cabang, gunakan perintah git branch dengan argumen -d dan diikuti dengan nama cabangnya.

Contoh:

BASH
git branch -d halaman_login
Klik untuk membuka dan melihat lebih banyak

Akhir Kata…

Sekian tutorial ini. Semoga ada manfaatnya.

Referensi: help.github.com

Mulai mencari

Masukkan kata kunci untuk mencari artikel

↑↓
ESC
⌘K Pintasan