Belajar Git Pemula #2: Percabangan Git Dasar (Git Branching)

whynwd

whynwd Kamis, 05 Mei 2022

Belajar Git Pemula #2: Percabangan Git Dasar (Git Branching)

Lanjutan materi dari Belajar Git Pemula bagian pertama tentang Memahami Penggunaan Git dari Dasar — Menggunakan contoh proyek atau repositori yang sudah dibuat sebelumnya.

Cabang di Git pada dasarnya adalah hanya sebagai penunjuk (pointer) ke commit yang kita buat, dan terus bergerak maju berpindah urutan penunjukan, menunjuk ke commit terakhir.

Contohnya seperti berikut. Mari kita jalankan perintah git log --oneline --decorate untuk melihat commit terakhir yang sudah dibuat.

➜ belajar-git git:(master) git log --oneline --decorate
7e5559d (HEAD -> master) Menambahkan file style.css dan title index.html diubah
4055404 first commit

Selanjutnya mari kita buat perubahan atau memodifikasi file dan buat commit baru. Sebagai contoh, kita edit file style.css dan tambahkan css sederhana:

//style.css
body {
  background-color: #f9f9f9;
}

Setelah itu langsung kita lakukan commit.

git commit -a -m 'Mengubah warna latar belakang default'

Opsi -a(--all) pada perintah commit diatas akan otomatis menambahkan file yang dimodifikasi ke staging area.

➜ belajar-git git:(master) git commit -a -m 'Mengubah warna latar belakang default'
[master b66bd59] Mengubah warna latar belakang default
 1 file changed, 3 insertions(+)

Setelah commit, kambali kita jalankan git log --oneline --decorate.

➜ belajar-git git:(master) git log --oneline --decorate
b66bd59 (HEAD -> master) Mengubah warna latar belakang default
7e5559d Menambahkan file style.css dan title index.html diubah
4055404 first commit

Penunjukan telah bergeser. Commit pada urutan pertama yang terdapat HEAD dan cabang master diatas adalah commit terakhir atau terbaru yang ditunjuk.

Jika digambarkan, terlihat seperti berikut:

Belajar Git Pemula #2: Percabangan Git Dasar (Git Branching)

Commit terakhir yang dibuat atau yang terbaru pada cabang disebut sebagai ujung cabang, dan ujung cabang direferensikan oleh kepala cabang, dan kepala cabang ditunjuk langsung oleh HEAD.

HEAD sendiri adalah pointer (penunjuk) khusus yang digunakan untuk mengetahui cabang saat ini atau yang sedang digunakan.

Karena kita dapat membuat lebih dari satu cabang dan dapat berganti cabang, HEAD akan menunjukan di cabang mana saat ini.

Jika kita lihat di dalam direktori .git repositori, disitu terdapat file bernama HEAD yang merupakan tempat dimana informasi rujukan atau referensi ke kepala cabang saat ini.

Kita bisa jalan perintah cat .git/HEAD untuk melihatnya.

➜ belajar-git cat .git/HEAD
ref: refs/heads/master

Output diatas adalah nama referensi cabang dengan jalur referensi ke kepala cabang yang lengkap. Namun Git sering menggunakan nama yang lebih singkat, yaitu nama cabang itu sendiri.

Jalankan git branch untuk melihatnya.

➜ belajar-git git branch
* master

Nama referensi lengkap biasanya digunakan jika terdapat cabang dengan nama yang sama.

Baik cabang lokal, remote cabang, dan tag semuanya adalah referensi ke commit. File referensi disimpan di .git/refs sesuai referensi.

Membuat Cabang Baru

Sekarang mari kita coba membuat cabang baru dan melihat seperti apa penunjukan yang akan dilakukan HEAD jika kita memiliki lebih dari satu cabang.

Untuk membuat cabang baru, kita gunakan perintah git branch <nama-cabang>:

➜ belajar-git git branch todo

'todo' adalah contoh nama untuk cabang baru yang akan dibuat, jika ingin nama lain silahkan sesuaikan.

Setelah cabang baru dibuat, sekarang kita memiliki dua cabang lokal, master dan todo, dan cabang yang aktif saat ini adalah 'master' — yang diberi tada bintang:

➜  belajar-git git branch
* master
  todo

Lalu setelah cabang baru dibuat apa yang terjadi? Ketika kita mambuat cabang baru, maka yang terjadi adalah commit saat ini memiliki pointer baru, yaitu 'todo'.

Jalankan perintah git log --oneline --decorate untuk melihatnya:

➜  belajar-git git:(master) git log --oneline --decorate
b66bd59 (HEAD -> master, todo) Mengubah warna latar belakang default
7e5559d Menambahkan file style.css dan title index.html diubah
4055404 first commit

Gambarannya seperti barikut:

Belajar Git Pemula #2: Percabangan Git Dasar (Git Branching)

Pointer HEAD saat ini sedang menunjuk ke cabang 'master', yang berarti cabang saat ini atau yang sedang digunakan saat ini adalah 'master'.

Semua commit yang ada saat ini adalah milik 'master', dan jika kita membuat commit baru, maka commit baru tersebut masih milik 'master'. Kenapa demikian? Karena kita masih di cabang 'master', dan belum beralih cabang.

Selanjutnya mari kita coba beralih ke cabang 'todo' dan kemudian membuat commit baru. Kita lihat apa yang terjadi.

Jalankan perintah git checkout <nama-cabang> untuk beralih cabang:

➜  belajar-git git checkout todo
Jika versi Git yang digunakan v2.23 atau diatasnya, bisa juga menggunakan git switch yang sama fungsinya seperti git checkout.
➜ belajar-git git:(master) git switch todo
Switched to branch 'todo'
➜ belajar-git git:(todo) git log --oneline --decorate
b66bd59 (HEAD -> todo, master) Mengubah warna latar belakang default
7e5559d Menambahkan file style.css dan title index.html diubah
4055404 first commit

Kita sudah berada di cabang 'todo'. Dan HEAD saat ini menunjuk ke cabang 'todo'.

Selanjutnya mari kita buat perubahan dan membuat commit baru. Untuk contoh, kita tambahkan css untuk mengubah warna teks elemen <h1>:

//style.css
body {
  background-color: #f9f9f9;
};

h1{
  color: red;
}
git commit -a -m 'Membuat perubahan warna teks heading'
➜ belajar-git git:(todo) git commit -a -m 'Membuat perubahan warna teks heading'
[todo fca505d] Membuat perubahan warna teks heading
 1 file changed, 4 insertions(+)

Setelah commit baru dibuat, kita lihat kembali riwayat commit:

➜ belajar-git git:(todo) git log --oneline --decorate
fca505d (HEAD -> todo) Membuat perubahan warna teks heading
b66bd59 (master) Mengubah warna latar belakang default
7e5559d Menambahkan file style.css dan title index.html diubah
4055404 first commit

Proyek kita saat ini telah menyimpang dari versi sebelumnya. Seperti memiliki dua versi proyek. Setiap perubahan yang kita lakukan akan terikat, atau hanya dikaitkan sesuai cabang yang digunakan saat perubahan itu dibuat.

Belajar Git Pemula #2: Percabangan Git Dasar (Git Branching)

Apapun yang kita buat, atau perubahan apapun yang kita kerjakan saat berada di cabang 'todo', tidak akan ada atau tidak terlihat di cabang 'master'.

Cabang saat ini adalah 'todo', mari kita beralih ke cabang 'master'.

➜ belajar-git git:(todo) git switch master
Switched to branch 'master'

Setelah kita beralih ke cabang 'master', maka versi proyek berubah, file atau kode dikembalikan ke versi lama. Kita hanya menggunakan snapshot yang sebelumnya kita commit di cabang 'master'.

Jika kita buka file style.css, maka css (h1) yang kita tambahkan sebelumnya saat di cabang 'todo', tidak ada.

//style.css
body {
  background-color: #f9f9f9;
};

Proyek kita saat ini telah kembali ke versi sebelumnya. Kembali ke versi yang lebih lama. Selanjutnya mari kita lihat apa yang akan terjadi jika kita buat commit baru setelah kembali ke cabang 'master'.

Mari kita tambahkan tag 'link' pada file index.html, lalu buat commit baru.

//index.html
...
 <title>Hello World!</title>
  <link rel="stylesheet" href="style.css">
...
git commit -a -m 'Menambahkan tag link external css'

Jalankan perintah git log --oneline --decorate --graph --all untuk melihat semua riwayat commit dan cabang yang menyimpang.

➜  belajar-git git:(master) git log --oneline --decorate --graph --all
* cc8c0ff (HEAD -> master) Menambahkan tag link external css
| * 3ac0102 (todo) Membuat perubahan warna teks heading
|/
* 729f5bb Mengubah warna latar belakang default
* 904d7cb Menambahkan file style.css dan title index.html diubah
* 1b65745 first commit

Saat commit baru di cabang 'master' ditambahkan, maka kita memiliki snapshot yang baru, dan garis perkembangan berada di jalur terpisah. Garis perkembangan saat ini tidak lagi dalam satu baris, melainkan menyimpang atau bercabang.

Berikut gambarannya:

Belajar Git Pemula #2: Percabangan Git Dasar (Git Branching)

Jadi dengan membuat cabang baru, kita memiliki jalur pengembangan lain yang membuat setiap perubahan diisolasi di cabang terpisah.

Jika di praktekkan dalam pengembangan suatu proyek, kita dapat dengan mudah membuat salinan proyek untuk percobaan fitur atau pengembangan fitur tanpa menyentuk kode utama, sehingga kerusakan kode atau hal lain yang tidak diinginkan dapat diantisipasi.

Kita bisa bolak-balik antar cabang dengan perubahan dan pengembangan yang terpisah, dan apabila pengembangan fitur pada cabang selesai dilakukan dan telah siap, maka kita dapat menggabungkannya dengan cabang utama.

Selesai

Dengan adanya cabang di Git, pekerjaan kita dapat menyimpang dari jalur utama pengembangan, dan kita dapat terus melakukan pekerjaan tanpa mengacaukan jalur utama.

Silahkan pelajari kembali apa yang sudah dibuat diatas, dan lakukan eksperimen. Belajar Git dasar bagian #2 selesai.

Tip! Jika menggunakan PowerShell di windows, bisa mempercantiknya dengan menambahkan modul seperti Oh My Posh yang dapat menampilkan status cabang Git.

Lihat Cara Install Oh My Posh di PowerShell

Belajar Git Pemula #2: Percabangan Git Dasar (Git Branching)

Pembahasan berikutnya:

Belajar Git Pemula #3: Penggabungan Cabang (Git Merging)

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel