Kerja Sama Tim dengan Git
Implementasi GitLab untuk Mempermudah Kolaborasi
Awal Kata
Git
Sebelum masuk ke dalam pembahasan yang lebih jauh, mari kita pahami bersama apa itu Git agar kita berada di halaman yang sama. Dijelaskan dalam situs resminya:
Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency. (“git — fast-version-control”, n.d.)¹
Git adalah sebuah version control system (VCS). VCS sendiri adalah sebuah sistem yang merekam perubahan yang terjadi dalam suatu file atau himpunan files seiring berjalannya waktu sedemikian rupa sehingga kita dapat mengembalikan versi tertentunya di kemudian waktu (Chacon & Straub, 2014)².
GitLab
Sedangkan GitLab, merupakan sebuah platform terintegrasi berbasis Git yang diperuntukkan bagi pengembangan perangkat lunak (“Git”, n.d.)³. GitLab mengadopsi berbagai fitur yang dimiliki oleh Git, dan menambahkan fitur-fitur yang esensial bagi alur kerja pengembangan perangkat lunak.
GitLab hadir sebagai alternatif untuk memudahkan berbagai macam tim bekerja bersama dalam suatu proyek, bahkan secara remote sekalipun. GitLab fokus pada bagaimana sekelompok orang dapat bekerja sama untuk mengembangkan perangkat lunak dan berkolaborasi dalam menyimpan codes.
Dasar Git
(“git — fast-version-control”, n.d.)⁴
Berikut adalah perintah-perintah dasar sebagai bekal awal dalam menggunakan sistem Git untuk pengembangan perangkat lunak. Panduan selengkapnya dapat dilihat di situs resminya di git-scm.com atau gitlab.com.
Pull
Pull adalah perintah yang digunakan untuk mengambil dan berintegrasi dengan suatu repository atau local branch. Format perintah pull adalah:
git pull [<options>] [<repository> [<refspec>…]]
Contoh:
git pull origin master
Push
Push adalah perintah yang digunakan untuk memperbarui remote refs bersamaan dengan objek yang berkaitan. Format perintah push adalah:
git push [--all | --mirror | --tags] [--follow-tags] [--atomic] [-n | --dry-run] [--receive-pack=<git-receive-pack>]
[--repo=<repository>] [-f | --force] [-d | --delete] [--prune] [-v | --verbose]
[-u | --set-upstream] [-o <string> | --push-option=<string>]
[--[no-]signed|--signed=(true|false|if-asked)]
[--force-with-lease[=<refname>[:<expect>]]]
[--no-verify] [<repository> [<refspec>…]]
Contoh:
git push origin master
Clone
Clone adalah perintah yang digunakan untuk menklon sebuah repository ke direktori baru. Format perintah clone adalah:
git clone [--template=<template_directory>]
[-l] [-s] [--no-hardlinks] [-q] [-n] [--bare] [--mirror]
[-o <name>] [-b <name>] [-u <upload-pack>] [--reference <repository>]
[--dissociate] [--separate-git-dir <git dir>]
[--depth <depth>] [--[no-]single-branch] [--no-tags]
[--recurse-submodules[=<pathspec>]] [--[no-]shallow-submodules]
[--[no-]remote-submodules] [--jobs <n>] [--sparse] [--] <repository>
[<directory>]
Contoh:
git clone https://gitlab.cs.ui.ac.id/ppl-fasilkom-ui/2020/akhirnya-lawyer-benchmark-prototype.git
Merge
Merge adalah perintah yang digunakan menyatukan dua atau lebih histori pengembangan bersamaan. Format perintah merge adalah:
git merge [-n] [--stat] [--no-commit] [--squash] [--[no-]edit]
[--no-verify] [-s <strategy>] [-X <strategy-option>] [-S[<keyid>]]
[--[no-]allow-unrelated-histories]
[--[no-]rerere-autoupdate] [-m <msg>] [-F <file>] [<commit>…]
git merge (--continue | --abort | --quit)
Contoh:
git merge fitur1
Rebase
Rebase adalah perintah yang digunakan untuk mengembalikan commit di atas ujung base tip lainnya. Format perintah rebase adalah:
git rebase [-i | --interactive] [<options>] [--exec <cmd>]
[--onto <newbase> | --keep-base] [<upstream> [<branch>]]
git rebase [-i | --interactive] [<options>] [--exec <cmd>] [--onto <newbase>]
--root [<branch>]
git rebase (--continue | --skip | --abort | --quit | --edit-todo | --show-current-patch)
Contoh:
git rebase — onto master fiturA fiturB
Revert
Revert adalah perintah yang digunakan untuk mengembalikan commit yang telah ada sebelumnya. Format perintah revert adalah:
git revert [--[no-]edit] [-n] [-m parent-number] [-s] [-S[<keyid>]] <commit>…
git revert (--continue | --skip | --abort | --quit)
Contoh:
git revert HEAD~3
Stash
Stash adalah perintah yang digunakan untuk menyimpan pekerjaan sementara yang dapat dikembalikan kemudian. Format perintah stash adalah:
git stash list [<options>]
git stash show [<options>] [<stash>]
git stash drop [-q|--quiet] [<stash>]
git stash ( pop | apply ) [--index] [-q|--quiet] [<stash>]
git stash branch <branchname> [<stash>]
git stash [push [-p|--patch] [-k|--[no-]keep-index] [-q|--quiet]
[-u|--include-untracked] [-a|--all] [-m|--message <message>]
[--] [<pathspec>…]]
git stash clear
git stash create [<message>]
git stash store [-m|--message <message>] [-q|--quiet] <commit>
Contoh:
git stash
Remote
Remote adalah perintah yang digunakan untuk mengatur repositories yang sedang dipantau. Format perintah remote adalah:
git remote [-v | --verbose]
git remote add [-t <branch>] [-m <master>] [-f] [--[no-]tags] [--mirror=<fetch|push>] <name> <url>
git remote rename <old> <new>
git remote remove <name>
git remote set-head <name> (-a | --auto | -d | --delete | <branch>)
git remote set-branches [--add] <name> <branch>…
git remote get-url [--push] [--all] <name>
git remote set-url [--push] <name> <newurl> [<oldurl>]
git remote set-url --add [--push] <name> <newurl>
git remote set-url --delete [--push] <name> <url>
git remote [-v | --verbose] show [-n] <name>…
git remote prune [-n | --dry-run] <name>…
git remote [-v | --verbose] update [-p | --prune] [(<group> | <remote>)…]
Contoh:
git remote
Checkout
Checkout adalah perintah yang digunakan untuk berganti branch atau mengembalikan files dari working tree. Format perintah checkout adalah:
git checkout [-q] [-f] [-m] [<branch>]
git checkout [-q] [-f] [-m] --detach [<branch>]
git checkout [-q] [-f] [-m] [--detach] <commit>
git checkout [-q] [-f] [-m] [[-b|-B|--orphan] <new_branch>] [<start_point>]
git checkout [-f|--ours|--theirs|-m|--conflict=<style>] [<tree-ish>] [--] <pathspec>…
git checkout [-f|--ours|--theirs|-m|--conflict=<style>] [<tree-ish>] --pathspec-from-file=<file> [--pathspec-file-nul]
git checkout (-p|--patch) [<tree-ish>] [--] [<pathspec>…]
Contoh:
git checkout master
Branch
Branch adalah perintah yang digunakan untuk melihat daftar branch serta membuat dan menghapus branch. Format perintah branch adalah:
git branch [--color[=<when>] | --no-color] [--show-current]
[-v [--abbrev=<length> | --no-abbrev]]
[--column[=<options>] | --no-column] [--sort=<key>]
[(--merged | --no-merged) [<commit>]]
[--contains [<commit]] [--no-contains [<commit>]]
[--points-at <object>] [--format=<format>]
[(-r | --remotes) | (-a | --all)]
[--list] [<pattern>…]
git branch [--track | --no-track] [-f] <branchname> [<start-point>]
git branch (--set-upstream-to=<upstream> | -u <upstream>) [<branchname>]
git branch --unset-upstream [<branchname>]
git branch (-m | -M) [<oldbranch>] <newbranch>
git branch (-c | -C) [<oldbranch>] <newbranch>
git branch (-d | -D) [-r] <branchname>…
git branch --edit-description [<branchname>]
Contoh:
git branch fitur1
Mengakhiri Cerita
Bekerja bersama dalam pengembangan perangkat lunak menggunakan Git dan GitLab, akan sangat membantu dalam melacak perkembangan seiring berjalannya waktu. Walaupun penggunaannya akan membutuhkan waktu dan tenaga yang ekstra untuk mempelajari dan menguasai bagaimana Git bekerja, dengan implementasinya pengembangan akan jauh lebih mudah. Semoga tulisan ini bermanfaat.
Telaah Pustaka
[1] Chacon, S. & Straub, B. (2014). Pro Git (2nd ed.). Didapatkan dari https://git-scm.com/book/en/v2
[2] git — fast-version-control. (n.d.). Didapatkan dari https://git-scm.com/
[3] Git. (n.d.). Didapatkan dari https://docs.gitlab.com/ee/topics/git/
[4] git — fast-version-control. (n.d.). Didapatkan dari https://git-scm.com/