Panduan Menggunakan Git
Apa itu Git?
Pada dasarnya git merupakan salah satu Version Control System (VCS) yang digunakan untuk memudahkan kolaborasi antar Developer dalam membangun suatu aplikasi. Apabila kita telusuri sejarahnya, Git sendiri dibuat oleh Linus Torvalds untuk memudahkannya dalam manajemen Linux Kernel yang semakin besar. Dengan adanya git, akan ada banyak Developer yang dapat bekerja pada banyak hal secara bersamaan dan perubahan yang dilakukan setiap setiap developer tidak perlu kompatibel dengan perubahan yang dilakukan oleh developer lainnya. Hal ini bisa diatasi dengan sistem melihat perubahan pada commit dan merge untuk menjaga kompatibilitas tadi.
Berikut adalah perintah-perintah git yang biasanya sering dilakukan oleh banyak orang.
- git init: Perintah ini akan membuat git repository baru pada current directory. Perintah ini biasa dijalankan ketika pertama kali membuat project baru.
- git clone: Membuat copy suatu git repository dari suatu remote repository. Biasanya perintah ini dijalankan ketika ingin mengunduh seluruh remote repository pada project.
- git pull: Melakukan pull atau unduh semua perubahan dan commit ke local repository. Perintah ini biasa dijalankan ketika kita ingin mendapatkan snapshot terbaru dari remote repository.
- git checkout: Melakukan perpindahan antar branch. Dalam perkuliahan PPL, terdapat cukup banyak branch mulai dari master, staging, dan banyak PBI. Perintah ini digunakan untuk pindah ke branch yang lain. Selain itu, dengan parameter -b kita bisa membuat suatu branch yang baru.
- git status: Perintah ini akan menunjukkan file-file mana saja yang berubah dan mengetahui apakah statusnya sudah ditambahkan kedalam commit atau belum.
- git commit: Berguna untuk menyimpan seluruh perubahan yang ada di local repository sebelum di-push ke remote repository. Perintah ini salah satu yang paling sering digunakan ketika menggunakan git. Ketika melakukan commit, usahakan mengikuti panduan berdasarkan kesepakatan yang ada. Pesan commit yang baik sebaiknya menjelaskan perubahan yang dilakukan.
- git add: Menambahkan file-file yang akan dimasukkan kedalam staging sebelum melakukan commit. Untuk memudahkan, biasanya perintah yang dijalankan adalah “git add .” (tanpa kutip) yang berarti menambahkan semua file yang ada pada current directory.
- git push: Melakukan push atau upload commit yang ada di local repository ke remote repository. Untuk lebih jelasnya perintah ini memiliki sintaks berupa git push <nama_repo> <nama_branch>.
- git merge: melakukan merging dari satu branch ke branch yang lainnya. Biasanya perintah ini bisa saja tidak sukses dijalankan dan akan menghasilkan conflict. Hal ini bisa diatasi dengan melakukan perubahan secara manual bagian kode mana yang akan dipilih. Namun apabila menggunakan gitlab atau github, merging bisa dilakukan pada website tersebut. Saya sendiri lebih memilih merge lewat gitlab, karena bisa mendapatkan approval ataupun feedback dari anggota tim saya terlebih dahulu.
- git remote: menghubungkan local repository ke remote repository.
- git reset: melakukan undo pada suatu commit.
- git revert: mirip seperti git reset, hanya saja menambahkan commit baru yang melakukan undo pada commit lama.
- git rebase: menggabungkan commit dari suatu branch ke base commit yang baru. Saya sendiri jarang menggunakan perintah ini dalam membuat aplikasi.
Manakah yang lebih baik, git reset atau git revert ?
Dalam praktiknya, terutama ketika bekerja dengan tim, git revert jauh lebih baik dibandingkan git reset. Hal ini karena ketika kita melakukan git reset pada suatu branch yang akan digunakan oleh Developer lain, apabila melakukan git reset dan akhirnya melakukan force push (tidak bisa push saja karena remote repository memiliki history yang berbeda dengan local repository). Alhasil, Developer lain akan mengalami masalah ketika pull dan perlu melakukan penyesuaian. Berbeda dengan revert yang akan membuat commit baru, tidak akan terjadi masalah ketika Developer lain melakukan pull.
Git Flow
Dalam PPL kali ini, terdapat flow yang bisa digunakan agar mempermudah tracking terhadap pekerjaan setiap anggota kelompok. Pada Git Flow PPL 2021 sendiri terdapat beberapa cabang yaitu:
- Cabang Master. Pada cabang ini akan menyimpan semua kode sumber yang sudah bisa dipakai oleh user. Biasanya cabang ini dipakai untuk production environment.
- Cabang staging. Cabang ini merupakan cabang utama yang berisi seluruh kode dari masing-masing developer. Kode sumber pada cabang ini dipakai pada development environment dan ditest pada setiap sprint review.
- Cabang PBI. Cabang ini merupakan tempat untuk implementasi PBI (Product Backlog Item) yang diambil pada suatu sprint. Nantinya, terdapat beberapa cabang PBI yang akan diberi nama sesuai dengan nama PBI yang dikembangkan. Dalam kelompok kami, penamaan branch ini bisa terlihat seperti dibawah ini.
- Cabang Hotfix. Apabila terdapat suatu bug pada cabang master, maka dibuatlah cabang ini. Cabang ini bertujuan untuk memperbaiki bug tersebut dan melakukan merge kembali ke master.
- Cabang Coldfix. Apabila dalam sprint review Product Owner menolak salah satu PBI yang telah diimplementasikan, cabang ini berguna untuk menghapus semua perubahan yang telah dimerge ke staging. Penamaannya sendiri yaitu coldfix-sprint_<nomor_sprint>
Dari hal ini, berikut merupakan Git Flow pada PPL 2021 ini:
- Inisialisasi cabang master dan staging terlebih dahulu pada repository
- Inisialisasi cabang PBI untuk implementasi. Untuk penamaan dari PBI ini memiliki format berupa PBI-<nomor_pbi>-<judul_pbi>
- Penerapan TDD dalam melakukan implementasi. Hal ini telah dijelaskan lebih detail pada artikel saya ini.
- Melakukan penggabungan antara cabang PBI dengan cabang staging.
- Penyesuaian cabang staging untuk digabungkan dengan cabang master. Pada tahap ini dilakukan sprint review yang menunjukkan hasil implementasi PBI yang diambil. Apabila Product Owner menolak salah satu PBI, maka perlu melakukan revert dari cabang staging dengan membuat cabang coldifx.
Adrian
Referensi:
- Panduan Git PPL 2021
- https://git-scm.com/