Team Coding With Git

Dinda Inas
8 min readApr 6, 2021

--

Team Coding

Dalam mengembangkan suatu produk atau program, tentu tidak mudah untuk dilakukan sendirian. Seringkali dibutuhkan sebuah tim untuk mengembangkan produk tersebut. Dengan berbentuk tim, pengerjaan pengembangan produk dapat dibagi-bagi, sehingga produk dapat selesai lebih cepat.

Dalam mengembangkan produk sebagai sebuah tim, tentu dibutuhkan kolaborasi antar anggota tim tersebut. Lalu, bagaimana cara agar antar anggota tim tersebut dapat mengakses kode satu sama lain? Bagaimana cara agar dapat dengan mudah mengetahui bagian kode mana yang diubah oleh anggota lain? Dibutuhkan suatu sistem yang dapat merekam seluruh perubahan kode dalam pengembangan produk tersebut.

Version Control

Version Control adalah sebuah sistem yang merekam perubahan yang terjadi pada file, sehingga selanjutnya dapat menggunakan versi file dengan perubahan tertentu. Dengan adanya version control, perubahan pada file dapat dikembalikan ke versi-versi sebelumnya. Selain itu, dapat dilakukan perbandingan antar versi file, dan juga dapat dilihat siapa yang melakukan perubahan pada file.

Version control dapat ditemukan pada kegiatan sehari-hari seperti misal ketika kita menyimpan file-file desain yang banyak untuk ‘jaga-jaga’. Secara tidak sadar, manusia sudah terbiasa membuat sistem version control, seperti meng-copy file baru kemudian mengubah file baru tersebut di directory lain. Namun, sistem seperti ini sensitif terhadap eror. Kita rawan untuk lupa di directory mana kita menaruh file dengan versi tertentu.😅

Terlebih, apabila diperlukan kolaborasi dalam perubahan file, hal ini tentunya tidak dapat dipenuhi dengan hanya menyimpan file dengan versi-versi yang berbeda pada komputer local. Maka dari itu, dikembangkan sebuah sistem version control yang terpusat. Pada sistem ini, komputer dari berbagai tempat mengakses suatu server terpusat untuk mengambil versi file yang diinginkan.

Agar file tidak hanya bergantung pada satu server, dikembangkanlah sistem version control terdistribusi. Dengan sistem ini, tiap komputer yang ingin mengambil file tertentu pada server, juga menyimpan keseluruhan repository dari projek tersebut. Dengan begitu, apabila server mati, maka repository dari komputer klien dapat digunakan untuk mengembalikan file ke server.

Distributed Version Control System

Contoh dari Distributed Version Control System ini adalah Git. Dengan Git inilah kita dapat mengakses file secara kolaboratif. Kita dapat melihat perubahan pada file dan juga dapat mengakses seluruh versi perubahan file. Dengan begitu, pengerjaan pengembangan produk pada tim dapat berjalan dengan lebih mudah dan efisien.

Git

Git merupakan suatu sistem version control yang gratis dan open source, yang digunakan untuk projek dengan skala kecil maupun besar, dengan cepat dan efisien. Git berbentuk software yang dapat diakses melalui command line.

Git

Git dapat melacak perubahan yang dibuat pada file, dan juga dapat mengembalikan versi file tertentu yang diinginkan. Git berjalan di lokal, tetapi dapat menggunakan online host(GitHub, GitLab, dll.) untuk menyimpan seluruh file dan riwayat perubahannya.

Dengan adanya pusat penyimpanan file, mengembangkan produk secara kolaboratif menjadi jauh lebih mudah. Selain itu, Git juga dapat menyatukan perubahan-perubahan yang dibuat oleh tiap anggota tim. Dengan begitu, hal-hal yang dikhawatirkan dalam mengembangkan produk secara kolaboratif di awal, seperti sulit untuk mengakses kode anggota tim yang lain, maupun sulit untuk mengetahui perubahan yang dibuat oleh tiap anggota pun sudah terjawab!😄

Gitflow

Gitflow merupakan workflow atau alur kerja dari Git. Gitflow menjelaskan suatu model branching yang biasa digunakan dalam projek yang memiliki jadwal rilis tertentu. Sebelumnya, branch sendiri merupakan suatu cabang pada repository Git yang biasa digunakan ketika ingin menambahkan suatu fitur pada projek. Dengan adanya branch yang berbeda, tiap anggota tim dapat mengerjakan fiturnya masing-masing tanpa takut mempengaruhi kode dari anggota lain.

Gitflow menjelaskan kegunaan spesifik dari tiap branch. Melainkan hanya menggunakan satu cabang master, Gitflow menggunakan dua branch untuk menyimpan pengerjaan projek.

  • Branch master merupakan branch yang menyimpan pengerjaan projek yang telah siap untuk dirilis.
  • Branch develop merupakan branch yang berguna untuk mengintegrasikan seluruh fitur sebelum dirilis. Penamaan dari branch ini tidak mutlak harus develop, pada pengerjaan projek saya, penamaan yang digunakan adalah branch staging.
Ilustrasi branch master dan branch develop

Selain itu, untuk masing-masing fitur juga terdapat branch sendiri, yaitu branch fitur.

  • Branch fitur digunakan untuk pengerjaan fitur masing-masing. Branch fitur memiliki parent berupa branch develop, bukan branch master. Jadi, apabila suatu fitur telah selesai dikembangkan, fitur tersebut akan di-merge dengan branch develop. Branch fitur tidak pernah berinteraksi langsung dengan branch master.

Setelah branch develop mengandung fitur yang cukup, dibuat branch release dari branch develop.

  • Pada branch release, tidak ada penambahan fitur, melainkan hanya penambahan dokumentasi, membenarkan bug, dll. Setelah branch siap untuk dirilis, branch akan di-merge dengan branch master.
Ilustrasi seluruh branch

Terdapat juga branch yang dibuat ketika terdapat suatu bug yang harus di-fix secara cepat pada branch master, yaitu branch hotfix.

Git Manual

Setelah memahami mengenai Git di atas, sebenarnya bagaimana cara untuk menggunakan git tersebut? Berikut beberapa command line yang dapat digunakan dalam menggunakan git.

Git clone

Sebelumnya, untuk meng-copy atau meng-clone repository, dapat dilakukan dengan menjalankan command git clone <url repository>.

git clone

Git pull

Git pull merupakan command yang diunakan untuk menarik isi dari suatu branch pada repository. Git pull biasa saya gunakan ketika branch memiliki perubahan terbaru yang belum saya miliki. Misalnya yaitu ketika teman saya baru saja melakukan merge fitur pada branch develop, maka saya perlu melakukan pull pada branch develop di lokal saya agar mendapatkan kode terbaru dari branch tersebut.

git pull branch staging

Git push

Git push merupakan command untuk meng-update online repository dengan pengerjaan yang kita lakukan di lokal.

Sebelum melakukan push, biasanya dilakukan git add dan git commit terlebih dahulu untuk melakukan commit perubahan.

git push

Git merge

Git merge digunakan untuk menggabungkan branch dengan menggunakan command git merge <nama-branch>. Dengan begitu, branch tersebut akan disatukan dengan branch master.

Untuk command yang satu ini, bisa dibilang tidak pernah saya gunakan. Bukan karena tidak penting, tetapi karena saya lebih menyukai melakukan merge pada online repository secara manual karena dapat memberikan beberapa catatan dokumentasi pada saat membuat merge request.

Git branch <nama-branch>

Command git branch <nama-branch> akan membuat branch baru dengan nama sesuai <nama-branch>.

Membuat branch baru dengan nama PBI-18-Membuat-Jadwal-Kuliah

Penggunaan command tersebut tidak semata-mata membuat posisi kita langsung berada di branch tersebut. Untuk berpindah ke branch lain, kita dapat menggunakan command berikut.

Git checkout <nama-branch>

Git checkout <nama-branch> membuat kita berpindah ke posisi branch lain.

Pindah ke branch PBI-18

Namun, saya lebih suka menggunakan git checkout -b <nama-branch> sekaligus ketika membuat branch baru, agar dapat segera pindah ke branch yang baru dibuat. Command ini merupakan command yang sering saya pakai dalam mengembangkan projek saya untuk meminimalisir kesalahan penggunaan branch. 😁

Git stash

Nah ini command git yang saya baru pelajari, nih.

Git stash berguna untuk menyimpan sementara perubahan pada dirty working directory.

git stash untuk menyingkirkan perubahan sementara

Command ini sangat berguna ketika saya belum mau meng-commit pekerjaan saya (karena misal masih berantakan heheh), tetapi butuh untuk berpindah branch. Saya senang mengetahui keberadaan command ini.

git stash apply untuk mengembalikan perubahan yang sebelumnya di-stash

Selain command-command di atas, masih terdapat command git yang lain, seperti:

  • Git rebase: memindahkan dan menggabungkan beberapa commit ke suatu commit baru
  • Git revert: me-revert commit yang telah dibuat
  • Git remote: untuk sync dengan repository, biasa digunakan bersamaan dengan command lain seperti pull, push, dll.

Masih banyak command git yang dapat digunakan dan dipelajari lebih lanjut. Saya pribadi masih hanya sering menggunakan command-command git yang dasar seperti pull, push, dan checkout. Namun, beberapa command tersebut saja sudah sangat membantu pengerjaan projek saya.😁

Berkat git sebagai suatu sistem version control, saya dapat dengan mudah berkolaborasi dengan anggota tim saya dalam mengembangkan produk. Saya tidak bisa membayangkan apabila harus mengirim file perubahan masing-masing secara manual. Pasti akan sangat chaos karena bingung file versi mana yang berisi apa.😅

Dengan menggunakan git sebagai sistem version control, saya dapat melihat pengerjaan dan perubahan yang dilakukan oleh teman saya dan juga dapat meng-update maupun menarik kode terbaru pada repository projek. Hal ini membuat pengerjaan projek menjadi jauh lebih efisien, dan tentunya, mempelajari dan menggunakan lebih banyak command git lainnya ke depannya akan dapat membuat pengerjaan projek menjadi lebih mudah dan efisien lagi.

Selain itu, penggunaan Gitflow juga membantu pengembangan produk tim saya menjadi lebih rapih dan bersih, karena antar fitur memiliki branch masing-masing. Perbedaan fungsi antar branch seperti branch develop dan branch master juga membuat delivery produk menjadi lebih rapih dan aman. Walaupun terkadang, ketika dikejar waktu, rasanya cukup rumit untuk melakukan merge satu-satu antar branch. Tetapi, secara keseluruhan, konsep Gitflow ini sangat bermanfaat untuk pengerjaan projek pengembangan produk yang kolaboratif. Selamat mencoba!😊

References

--

--

Dinda Inas
Dinda Inas

Written by Dinda Inas

0 Followers

undergraduate computer science student

No responses yet

Write a response