Getting started with GIT

Siti Aulia Rahmatussyifa
5 min readFeb 26, 2020

--

Image source: https://thepupsandus.wordpress.com/2016/07/22/git-cheat-sheet-black-vs-white_background/

Sebagai development team tentunya kami membutuhkan Version Control System sebagai tools yang memungkinkan untuk melihat perubahan apa saja yang telah dilakukan pada pengembangan software. Kumpulan file dari software yang sedang dikembangkan diunggah ke repository, suatu wadah dimana developer dapat menyimpan source code-nya. Kami mengunakan Git sebegai Version Control System. Dengan Git kami dapat berkolaborasi dan dapat melihat apa saja yang sudah dikerjakan oleh developer lainnya.

GIT COMMAND

the simple guide

Berikut adalah beberapa command git/git manual yang dapat dilakukan :

  1. git clone — Meng-copy seluruh file yang ada di repository ke lokal, menggunakan
git clone <link repository>git clone https://gitlab.com/sarsyifa/adprog.git

2. git branch — Melihat list branch yang ada di repository dan melihat sedang di branch mana

git branch -agit branch

3. git checkout — untuk pindah branch

git checkout <nama branch yang dituju>git checkout tutorial-1

4. Untuk membuat branch baru, dapat menggunakan git branch ataupun git checkout. Perbedaannya dengan menggunakan membuat branch dengan git checkout, akan sekaligus pindah branch baru dan membuat branch baru. Sedangkan dengan git branch hanya membuat branch baru dan tidak langsung pindah branch.

git branch -b <nama branch>
git checkout -b <nama branch>
git checkout -b new_feature

5. git pull — Meng-update branch lokal kita dengan remote repository yang paling baru,

git pull origin <nama branch>git pull origin master

6. git status — Mendaftarkan file apa saja yang belum dicommit dan belum masuk staging

git status

7. git commit — Memberikan commit message perubahan yang telah dilakukan sebelum push ke remote repository. Pada ketentuan PPL 2020 diperlukan tag untuk commit:

  • [RED] untuk unit test dari setiap class dan fungsi/method yang telah dibuat(belum implementasi)
  • [GREEN] untuk yang sudah diimplementasi (minimal 1) agar lulus unit testing.
  • [REFACTOR] untuk setiap implementasi yang melakukan perbaikan pada kode yang sudah dibuat sebelumnya
  • [CHORES] untuk implementasi yang tidak berhubungan dengan fungsionalitas.
git commit -m "[TAG] commit message"git commit -m "[RED] add model test for upload document"

8. git push — Setelah melakukan commit, untuk mengirim perubahan yang ada ke remote repository dapat dilakukan dengan cara

git pushgit push origin <nama branch>git push origin tutorial-1

9. git merge — Untuk menggabungkan(merge) branch lain dengan branch yang sedang aktif digunakan, dan commit akan terjadi secara otomatis jika tidak terjadi konfilik. Contoh:

git merge <branch_yang_dituju>
Image source: https://www.atlassian.com/git/tutorials/using-branches/git-merge

Ilustrasi gambar diatas adalah kondisi branch sebelum di merge. Anggap ‘Feature tip’ sebagai branch fitur-1. Misal kita sedang ada di branch fitur-1. Untuk merge fitur-1 dengan master, kita perlu pindah terlebih dahulu ke branch master dengan cara

git checkout mastergit merge fitur-1

Berikut merupakan ilustrasi kondisi branch setelah di merge

Image source: https://www.atlassian.com/git/tutorials/using-branches/git-merge

10. git rebase — Kegunaannya mirip dengan git merge, memindahkan seluruh sejarah commit dari suatu branch untuk digabung ke ujung branch lain (HEAD). Perbedaannya adalah merge menyatukan commit terakhir dari kedua branch sedangkan rebase memindahkan seluruh sejarah commit. Berikut merupakan ilustrasi dari git rebase:

Image source: https://www.atlassian.com/git/tutorials/rewriting-history/git-rebase

11. git stash — Untuk menyimpan semua perubahan yang ada pada file yang telah di edit tanpa melakukan commit. Git akan menyimpan semua proggres yang telah dibuat dari commit terakhir ke dalam sebuah stack yang berisi semua stash yang pernah dilakukan. Setelah selesai stash, file-file baik yang masuk ke stage atau belum masuk stage, akan kembali seperti kondisi saat commit terakhir. Untuk mengembalikan progress yang telah simpan dalam stash tadi, dapat dilakukan dengan git stash apply

git stash git stash save <nama-stash>git stash apply

12. git revert — Untuk rolling back ke commit sebelumnya (mengembalikan kondisi dari suatu branch pada commit-commit sebelumnya) tanpa menghapus sejarah commit setelahnya. Git revert menghindari kita dari penghapusan file yang tidak diinginkan. Ilustrasinya seperti ini:

Image source: https://hackernoon.com/when-to-use-git-reset-git-revert-git-checkout-dc4824795d9

Meskipun kita sudah balik ke kondisi suatu commit sebelumnya, rangkaian sejarah commit-an kita masih ada..

Untuk melakukan git revert atau git reset dapat dilakukan dengan cara

git revert -n <commit hash>

Lakukan perintah git loguntuk melihat commit hash

Misal kita ingin rolling back pada commit-an [RED] add negative test

git revert -n 68e18fcdea02e573623ac0c747c378f068dfcd17git revert --continue

13. git reset Kalau tadi git revert mengembalikan kondisi branch pada commit sebelumnya TANPA menghapus sejarah commit setelahnya, git reset ini mengembalikan kondisi branch pada commit sebelumnya dengan menghapus sejarah commit setelahnya. Ketika kita udah reset suatu commit, maka commit-an setelahnya akan hilang. Ilustrasinya seperti gambar di bawah ini:

Image source: https://hackernoon.com/when-to-use-git-reset-git-revert-git-checkout-dc4824795d9

Contoh:

git reset --hard d75e32abb62b5422158b1f383b7e9085138a626a

Git Flow

Berikut merupakan branch yang akan digunakan pada project Advocato sesuai dengan ketentuan Panduan Git PPL 2020:

Image source: Panduan Git PPL 2020
  • Master: Branch utama yang menyimpan source code siap deploy ke dalam production environment. File yang ada pada branch ini siap untuk dipakai user. Jadi hanya owner atau maintainer saja yang bisa merge ke branch ini. Branch staging akan dimerge ke master dengan persetujuan product owner.
  • Staging: branch staging. Hasil sprint setiap minggu dikumpulkan pada branch ini.
  • PBI[1..n]: Branch ini untuk implementasi Product Backlog Item yang diambil suatu Sprint. merupakan branch dimana anggota tim mengerjakan task sprint masing-masing.
  • Hotfix: Branch yang digunakan untuk membenarkan kesalahan di master. Setelah error diperbaiki dan siap untuk di deliver, maka branch hotfix akan di merge kembali ke branch master
  • Coldfix: Branch yang digunakan untuk melakukan rollback (menghapus semua perubahan dari semua branch PBI). Hal ini dapat terjadi apabila saat sprint review, product owner menolak salah satu atau semua PBI yang sudah diimplementasikan untuk di-release.

--

--