GIT BRANCHING

Algis Al kausar
6 min readMay 18, 2023

--

Branching artinya kita membuat timeline baru yang berbeda dari timeline utama. Biasanya timeline utama atau branch di sebut dengan master atau main. Saat kita membuat timeline branch baru,semua perubahan yang kita lakukan tidak merusak timeline branch utama. Tidak ada batasan berapa banyak branch yang bisa kita buat di git,kita bisa bebas membuat branch dari branch manapun.
Kapan branch di gunakan? Branch biasanya digunakan saat ada fitur baru,ketika fitur sudah siap,kita bisa melakukan merge(mengabungkan)branch fitur baru ke branch utama.

Diagram Git Branching

Gambar di atas menunjukkan bagaimana percabangan dilakukan di GIT untuk mengembangkan fitur baru. Pada dasarnya, cabang adalah jalur yang terisolasi dan independen untuk mengembangkan fitur. Asumsikan garis tengah sebagai cabang utama di mana kode stabil dan diperbarui. Kemudian, asumsikan pengembang-1 ditugaskan untuk mengembangkan Fitur — 1. Jadi, Pengembang-1 memotong cabang dari cabang utama yang ditunjukkan pada diagram di atas seperti pada warna Magenta. Dan, Pengembang-2 ditugaskan untuk mengembangkan Fitur-2 dan dia memotong cabang dari cabang utama. Dan, itu ditunjukkan dengan warna Biru.

Mari kita asumsikan basis kode atas adalah kumpulan 4 file yang disebut File-1, File-2, File-3, dan File-4. Jadi, ketika Developer-1 mengambil cabang dari master untuk mengembangkan fitur-1 (asumsikan File-1 dan File-3 akan diubah untuk pengembangan). Jadi, pengembang dapat dengan aman melakukan perubahan pada kedua file tersebut ke dalam cabang master. Begitu juga sebaliknya, ketika Developer-2 mengambil cabang dari master untuk mengembangkan fitur-2 (asumsikan File-2 dan File-4 akan diubah untuk pengembangan).

1. Membuat sebuah branch baru

git branch <nama_branch>

Membuat Git branch

git checkout <nama_branch>

Berpindah ke dalam branch yang kita buat atau yang di miliki

git checkout -b <nama_branch>

Argument -b digunakan untuk membuat cabang sekaligus memeriksa cabang baru yang dibuat.

2. Menghapus branch yang kita miliki

cara 1
git branch -d <branch_name>

cara 2
git branch -D <branch_name>

argumen ‘-d’ berarti menghapus cabang hanya jika cabang tersebut didorong dan digabungkan dengan cabang jarak jauh. Jadi, ini adalah opsi hapus yang aman

argumen -D berarti menghapus secara paksa tanpa memeriksa apakah cabang tersebut terdorong atau tidak.

If you wish to delete the remote branch directly, pass the following command

cara 1
git push origin --delete <branch_name>

cara 2
git push origin :<branch_name>

Ingatlah bahwa asal pada perintah di atas adalah nama jarak jauh dari server GIT

catatan: maksud kata “jarak jauh” ialah yang berada di server GIT / Repository

3. Menganti nama cabang saat ini

Mengganti nama cabang adalah operasi penting lainnya di GIT. Terutama, ketika pengembang membuat cabang dan mendorongnya ke remote dan ingin mengganti namanya.

A. Untuk mengganti nama cabang lokal
Jika Anda ingin mengganti nama cabang lokal dan Anda berada di cabang yang ingin Anda ganti namanya, masukkan perintah berikut

git branch -m <new_branch_name>

B. Jika Anda berada di cabang yang berbeda dan ingin mengganti nama cabang secara lokal, berikan perintah berikut

git branch -m <old_branch_name> <new_branch_name>

C. Untuk mengganti nama cabang jarak jauh dengan menghapus

git push origin :<old_branch_name> <new_branch_name>

ini adalah menghapus cabang tetapi dengan perintah yang sama, kita mengganti nama cabang dengan menambahkan cabang baru.

D. Jika Anda berada di cabang yang perlu diganti namanya di remote, maka berikan perintah berikut dengan argumen hulu -u (Ini hanya akan mengubah nama cabang hulu saat ini.).

git push origin -u new-name

4.MERGE
Merge adalah proses dimana kita melakukan penggabungan dua branch,maksudnya bukan mengabungkan menjadi satu tapi fitur 1 di satukan sama fitur yang lainnya dan branch/cabang branch di setiap fiturnya tetap masih ada (tidak di hapus).Jika kita ingin menghapus branch yang sudah di merge kita perlu lakukan secara manual.

A. Melakukan MERGE
Untuk melakukan merge,kita harus pindah dulu ke branch dimana merge akan di lakukan
Catatan: Branch Master mempunyai cabang salah satunya branch Developer.Nah kita ingin menggabungkan branch Developer sama Master….berati kita harus berada di branch master lalu lakukan

git merge <nama_branch>

secara tidak langsung kita menarik fitur yang berada di branch Developer ke Master dan branch Developer masih ada.

Diagram Merge

                                              ______
| |
| 4432 |--branch Feature/1
/|______|
/______
/| |
/ | 3721 |--branchFeature/2
/ /|______|\
/ / \---Merge(akan menciptakan 1
______ ______ ______ /_/___ ___\__ buah commit baru)
| | | | | | | | | |
| 4321 |----| 7321 |----| 5321 |----| 2313 |----| 1432 |--branch Master
|______| |______| |______| |______| |______|
\ \ ______
\ \ | |
\ \| 1325 |--branch Feature/3
\ |______|
\ ______
\| |
| 7732 |--branch Feature/4
|______|

Diagram Saat masing2 branch di commit dan menghasilkan commit masing2

                       ______
| |Branch Feature/2
/| 4432 |\
/ |______| \
/ \
/ ______ \
/ | |Branch \
/ /| 3721 |\(Ft/1) \
/ / |______| \ \
______ /_/___ ___\__ \______ ______ ______
| | | | | | | | | | | |
| 5321 |----| 2313 |----| 1432 |----| 4762 |----| 3211 |----| 5552 | -> Master
|______| |______| |______| |______| |______| |______|
\ \ / /
\ \ / /
\ \ / /
\ \ / /
\ \ / /
\ \ / /
\ \ / /
\ \ / /
\ \ / /
\ \ ______ / /
\ \ | | / /
\ \| 1325 |/ /
\ |______| /
\ Branch Feature/3 /
\ /
\ /
\ /
\ ______ /
\ | | /
\| 7732 |/
|______|
Branch Feature/4

B. Merge conflict
Kadang programmer akan melakukan perubahan code pada file yang sama,dalam artian 1 fitur/1 file di edit oleh 2 programmer …dan itu biasa terjadi saat dalam project…. untuk programmer yang merge pertama itu aman aman saja akan tetapi untuk programmer merge ke 2 itu akan terjadi conflick…(karena file yang dia ubah terlanjur di ubah oleh programmer yang lain). Hal ini terjadi karena 1 file di ubah oleh 2 branch yang berbeda,sehingga saat merge ,kita perlu melakukan merge conflick (harus di lakukan secara manual.
Membatalkan conflict
Jika terjadi confict kita wajib memperbaikinya terlebih dahulu.
. Semua perubahan yang tidak konflik secara otomatis akan berada di staging index.
. Semua perubahan yang konflik akan secara otomatis berada di working directory.
. Jika kita ingin membatalkan merge kita bisa gunakan perintah

git merge - abort

. Secara otomatis semua perubahan di branch yang ingin kita merge akan dihapus
Memperbaiki conflict
Kita perlu memperbaiki conflict secara manual dan jika perbaikan conflict sudah di lakukan maka kita perlu melakukan commit perubahan tersebut.

Diagram Conflict

                    ______
| |
| 3217 |
/|______|\
______ __/___ _\____ ______ ______
| | | | | | | | | |
--| 1432 |----| 4762 |----| 3211 |----| 5552 |----| 3198 | --> Master
|______| |______| |______| |______| |______|
\ / |
\ / |
\ / V
\ ______ / Merge Conflict Commit
\| |/
| 6573 |
|______|

5. Cherry Pick
Cherry pick merupakan fitur yang digunakan untuk mengambil commit dari branch manapun dan kita merge ke dalam branch saat ini.

Diagram branch nya

                                                     Feature/C
/
______ ______ ______ ____/_
| | | | | | | |
| 4731 |----| 3212 |----| 1372 |----| 5717 |
/|______| |______| |______| |______|
/
/
____/_
| |
| 3198 | --> Master
|______|

Melakukan Cherry Pick
Misalkan kita ingin melakukan merge branch feature/c namun tidak semuanya,kita bisa gunakan

git cherry-pick <commitId>

Diagram hasil cherry pick

                                                    Feature/C
/
______ ______ ______ ___/__
| | | | | | | |
| 4731 |----| 3212 |----| 1372 |----| 5717 |
/|______| |______| |______| |______|
/ \ /
___/__ __\___ _____/
| | | | | |
---| 3198 |----| 7788 |----| 9732 |--> Master
|______| |______| |______|

kesimpulannya
GIT memiliki mekanisme yang berbeda untuk melakukan percabangan. Pada artikel ini, kita telah membahas apa itu GIT Branch dan operasinya serta bagaimana perintah-perintah GIT Branch digunakan. GIT juga dapat digunakan sebagai alat otomasi jika kita dapat memanfaatkan dan menangani semua fiturnya.

Untuk mempelajari Git lebih dalam lagi kalian bisa lihat disini.

--

--