Buku Saku Git — Cheatsheet Bahasa Indonesia

Reyhan Alhafizal
4 min readFeb 24, 2020

--

Dalam pengembangan perangkat lunak skala menengah-besar, tentu saja diperlukan kerja sama dalam tim. Untuk memudahkan pekerjaan dalam tim, saya rasa semua pengembang setuju version control system (VCS) wajib digunakan dan Git adalah pilihan utamanya.

Berikut adalah paparan singkat yang perlu programmer tahu mengenai Git.

Git Manual

Berikut command yang sering digunakan pada Git.

Setup

Buat folder, lalu buat repositori Git baru dengan cara menjalankan command ini bara terminal.

git init

Jika ingin membuat salinan dari repositori yang sudah ada, gunakan git clone.

# Untuk menyalin local repository
git clone /path/to/repository
# Untuk menyalin remote repository
git clone username@host:/path/to/repository

Workflow

Di Git, terdapat tiga bagian yang disebut “trees”.

  • Working Directory: Tempat menyimpan file kerja
  • Index/Stage: Pengolah data
  • HEAD: Mengarah pada commit terakhir.
Git trees | Sumber: https://rogerdudler.github.io/git-guide/

Setelah menyelesaikan perubahan pada working directory, tambahkan perubahan Anda ke index/stage.

# Menambahkan perubahan pada file yang dituju
git add <nama-file>
# Menambahkan perubahan pada seluruh file pada folder saat ini
git add *
# Membatalkan penambahan pada file yang dituju
git rm <nama-file>

Setelah itu, lakukan commit pada perubahan yang telah ditambahkan.

git commit -m "Pesan commit yang bermakna"

Untuk melihat file yang belum Anda add atau commit, jalankan:

git status

Pushing Changes

Setelah melakukan commit, perubahan Anda sekarang berada di HEAD. Untuk mengirimnya ke remote repository Anda, jalankan:

git push origin <nama-branch>
# Secara default, nama branch utama adalah "master"

Jika Anda tidak menyalin repositori yang sudah ada, hubungkan repositori Anda pada remote server.

git remote add origin <server>

Branching

Saat membuat fitur baru, gunakan branch baru untuk memisahkan hasil pekerjaan yang sudah ada dengan pekerjaan yang sedang dikembangkan. Branch “master adalah branch bawaan saat membuat repositori. Buat branch baru lalu gabungkan kembali ke branch master setelah selesai menambahkan fitur.

Branching flow | Sumber: https://rogerdudler.github.io/git-guide/

Buat branch baru dan pindah ke branch tersebut.

git checkout -b <nama-branch># Jika ingin membuat branch baru dan tetap berada di branch yang sama
git branch feature_x

Push branch yang baru kamu buat untuk menyimpannya pada remote repository.

git push origin <nama-branch>

Untuk pindah branch, jalankan:

git checkout master

Untuk menghapus branch, jalankan:

git branch -d <nama-branch>

Untuk melihat daftar branch yang ada, jalankan:

git branch
# Branch saat ini ditandai dengan warna hijau dan tanda bintang.

Update & Merge

Untuk memperbarui local repository Anda ke commit terbaru, jalankan:

git pull

Untuk menggabungkan branch lain ke branch saat ini, jalankan:

git merge <branch>

Anda juga dapat menggabungkan branch dengan cara git rebase. Command ini akan menerapkan commit pada branch yang akan digabungkan satu per satu secara berurutan.

git rebase master
git rebase master feature_branch

Saat melakukan pull atau merge, Git akan menggabungkan perubahan yang ada. Namun, terkadang terjadi konflik pada file yang mengalami perubahan. Anda perlu menggabungkan atau menyelesaikan konflik tersebut secara manual. Setelah itu, lakukan git add untuk menambahkan penyelesaian konflik yang telah Anda lakukan ke index/stage.

Sebelum melakukan penggabungan, Anda dapat melihat pratinjau perubahan yang ada pada kedua branch dengan cara:

git diff <source_branch> <target_branch>

History

Untuk melihat daftar commit yang ada, jalankan:

git log

Command ini juga menampilkan hash commit yang dapat anda gunakan untuk membatalkan commit.

Undoing things

Jika Anda melakukan kesalahan pada commit yang dilakukan di local, Anda dapat membatalkan commit tersebut dengan git reset.

# Membatalkan commit dan tetap mempertahankan perubahan yang ada
git reset --soft HEAD^
# Membatalkan commit dan mengembalikan kondisi file pada saat commit terakhir
git reset --hard HEAD^
# Membatalkan commit yang diinginkan
git reset <hash-commit>

Jika Anda sudah mem-push branch Anda dan sudah di-pull orang lain, maka Anda bisa melakukan git revert.

# Membuat commit baru yang mengembalikan perubahan yang dilakukan pada commit terakhir
git revert HEAD

Jika Anda belum melakukan commit, dan ingin mengembalikan kondisi file pada saat commit terakhir, Anda dapat menggunakan git checkout.

# Mengembalikan kondisi file pada saat commit terakhir
git checkout -- <nama-file>

Stash & Clean

Jika Anda ingin berpindah branch tetapi masih ada file yang belum di-commit karena belum selesai misalnya), anda dapat menyimpan perubahan yang Anda buat dan membuat folder kerja Anda bersih.

# Menyimpan perubahan folder kerja Anda
git stash
# Menerapkan perubahan yang baru saja disimpan
git stash apply

Jika Anda ingin menghilangkan perubahan yang belum anda tambahkan pada stage dan membuat folder Anda bersih, jalankan:

# Membersihkan folder kerja Anda dari untracked files
git clean

Git di PPL

Pada PPL, kelompok kami — DUARPPL — menggunakan git dalam project kami. Kami menggunakan git flow sebagai branching model sesuai dengan panduan yang diberikan.

Branch pada backend proyek kami

Kami membuat branch staging yang merupakan cabang dari master. Untuk setiap PBI, kami membuat cabang dari staging. PBI yang telah selesai diimplementasi dibuatkan merge request. Setelah ada dua orang yang menyetujui merge tersebut, cabang akan di-merge ke staging.

Contoh merge request pada proyek kami

Setiap sprint review, kode pada staging akan direview oleh dosen dan PO. Jika telah disetujui, akan di-merge ke master dan di-deploy ke production.

Sekian penjelasan singkat mengenai command Git yang sering digunakan dan penerapan Git flow di kelompok kami. Semoga bermanfaat.

Referensi

https://rogerdudler.github.io/git-guide/

https://guides.github.com/introduction/git-handbook/

https://medium.com/@manivel45/git-merge-vs-rebase-reset-vs-revert-vs-checkout-dd5674d0e18a

https://git-scm.com/book/en/v2

--

--

Reyhan Alhafizal
Reyhan Alhafizal

Written by Reyhan Alhafizal

Computer Science Student at University of Indonesia

No responses yet