Yuk, Kenalan Sama Git!

Nurul Faza S.
LEARNFAZZ
Published in
4 min readFeb 27, 2019

Kali ini, saya akan membahas topik yang tidak asing di bidang Software Engineering yaitu Git Version Control.

Sebelumnya, tahukah Anda apa itu Version Control System?

Version Control System (VCS) adalah sebuah sistem yang dikembangkan oleh para software engineer untuk melacak atau mencatat perubahan yang telah dilakukan pada kode-kode yang telah dibuat pada setiap versi-nya. Dengan VCS, kita dapat dengan mudah meninjau sejarah pengembangan kode serta memahami alasan mengapa kode-kode tersebut diubah. Hal ini juga mempermudah software engineer dalam melakukan eksperimen dengan kode yang mereka buat, karena VCS memungkinkan kita untuk kembali ke versi kode kita yang lama (Blischak, J. D., Davenport, E. R., & Wilson, G. (2016)).

VCS juga memfasilitasi kolaborasi antar-software engineer. Dengan VCS, Anda dan kolaborator Anda dapat saling membuat dan menyimpan perubahan kode serta memasukkan perubahan tersebut ke main code base. Adapun, aspek kolaboratif ini ditingkatkan lagi dengan adanya situs web yang dapat meng-host VCS ini (Blischak, J. D., Davenport, E. R., & Wilson, G. (2016)).

Nah, salah satu dari VCS yang populer di kalangan Software Engineer adalah Git Version Control!

Perbedaan Git dengan VCS lain adalah adanya istilah snapshot. Git memperlakukan datanya sebagai sebuah kumpulan snapshot dari sebuah miniatur sistem berkas.

Git menyimpan datanya sebagai snapshot dari proyek setiap saat. Sumber : https://git-scm.com/book/id/v1/Memulai-Git-Dasar-Git

Setiap kali dilakukan perubahan atau commit, Git akan merekam keadaan berkas-berkas Anda pada saat itu. Kemudian Git akan menyimpan informasi tersebut dalam bentuk referensi. Jika suatu berkas tidak mengalami perubahan, maka Git tidak akan menyimpan berkas tersebut menjadi berkas baru, melainkan sebagai berkas yang sama seperti file sebelumnya. Hal ini menyebabkan penyimpanan berkas pada Git menjadi lebih efisien.

Secara singkat, saya akan memaparkan beberapa command atau istilah yang sering digunakan atau ditemukan pada Git, yaitu :

  1. Pull : memperbarui local repository dengan meng-update dan melakukan merge dengan berkas yang ada di original repository

2. Push : mengirimkan perubahan ke master atau branch lain pada remote repository

3. Clone : membuat salinan project ke local repository

4. Merge : menggabungkan branch atau dua jalan development yang berbeda

5. Rebase : menerapkan commit di atas base lain

6. Revert : melakukan undo untuk commit yang sudah dilakukan

7. Stash : menyimpan perubahan untuk current working directory di saat ingin kembali ke clean working directory

8. Remote : perintah ini digunakan untuk mengelola set ofremote “repository yang cabangnya dilacak

9. Checkout : perintah untuk mengganti branch

10. Branch : cabang yang memungkinkan development dapat dilakukan secara paralel

Proyek PPL LearnFazz juga menggunakan Git sebagai Version Control System-nya. Dalam pengerjaannya, kami mengikuti konteks penggunaan Git dengan pola Git Flow. Git Flow diterapkan agar pelacakan untuk pengerjaan setiap anggota dapat dilakukan dengan lebih mudah. Selain itu, penerapan Git Flow juga akan membuat branch master menjadi lebih rapi.

Pada Git Flow PPL kali ini, kami membagi proyek menjadi beberapa cabang, yaitu :

  1. Cabang Master : cabang utama yang menyimpan source code yang siap di-deploy ke dalam product environment
  2. Cabang Staging : cabang utama yang terkait dengan proses pengembangan yang menyimpan source code hasil pekerjaan setiap developer. Cabang ini adalah cabang yang nantinya akan digunakan dalam Sprint Review
  3. Cabang User Story : cabang yang digunakan untuk implementasi suatu user story
  4. Cabang Hotfix (opsional) : cabang yang digunakan sebagai tempat memperbaiki bug
  5. Cabang Coldfix : cabang untuk melakukan rollback atau menghapus semua perubahan dari semua cabang user story. Hal ini terjadi jika product owner menolak salah satu atau semua user story yang sudah diimplementasikan pada tahap sprint review

Pola Git Flow yang diterapkan pada proyek PPL LearnFazz diawali dengan inisialisasi pada cabang master dan staging pada repository. Inisialisasi pada cabang master dilakukan oleh Scrum Master, kemudian cabang staging dibuat berdasarkan cabang master yang sudah disiapkan. Untuk melakukan implementasi, dilakukan inisialisasi branch user story oleh anggota tim yang memiliki task berkaitan dengan user story tersebut. Implementasi dilakukan mengikuti disiplin TDD (Test Driven Development), yaitu Red, Green, dan Refactor.

Hasil implementasi dari user story kemudian di-merge request ke cabang staging untuk menggabungkan pekerjaan dari semua cabang user story. Kemudian code review pada merge request dilakukan untuk setiap user story oleh anggota kelompok yang tidak melakukan implementasi terhadap user story tersebut. Jika sudah dilakukan merge, maka source code yang ada pada cabang staging akan digunakan untuk sprint review. Apabila kode yang dihasilkan sudah disetujui oleh Product Owner, maka Git master atau Scrum Master akan melakukan merge ke cabang master.

Ketika mengerjakan proyek LearnFazz, saya menggunakan perintah git clone untuk membuat salinan proyek ke local repository. Kemudian saya mejalankan perintah git checkout untuk berpindah ke cabang staging. Dari cabang staging, saya membuat branch baru untuk user story yang saya kerjakan menggunakan perintah git checkout -b <nama-branch>.

Tasks yang saya miliki, dikerjakan pada branch user story yang sudah saya buat. Kemudian, saya akan menggunakan perintah git add . jika saya ingin menjadikan berkas baru dan berkas yang saya sudah dimodifikasi sebagai tracked files. Ketika saya ingin commit, maka saya menggunakan perintah git commit -m <comment>. Apabila saya ingin mengirimkan pekerjaan yang sudah saya commit ke branch repository saya yang ada pada Gitlab, maka saya menjalankan perintah git push.

Disaat mengerjakan proyek di local repository, saya akan menjalankan perintah git pull jika saya ingin melakukan update terhadap berkas-berkas yang anggota lain kerjakan di Gitlab. Terkadang saya juga menjalankan perintah git status, untuk mengetahui sedang berada di branch mana saya bekerja dan berkas-berkas apa saja sudah di-track dan belum di-track.

Referensi :

  1. Blischak, J. D., Davenport, E. R., & Wilson, G. (2016). A Quick Introduction to Version Control with Git and GitHub.
  2. Memulai Git — Dasar Git. Git. Web. 26 Februari 2019. https://git-scm.com/book/id/v1/Memulai-Git-Dasar-Git
  3. Basic Git Command. Atlassian, 2017. Web. 27 Februari 2019. https://confluence.atlassian.com/bitbucketserver/basic-git-commands-776639767.html

--

--