Git adalah sistem kontrol versi terdistribusi yang bersifat gratis dan open source. Git digunakan untuk melacak setiap perubahan pada file dalam suatu proyek, sehingga memungkinkan kolaborasi tim yang efisien serta manajemen versi yang lebih terstruktur dan andal.
Berikut adalah cheat sheet Git yang bisa Anda gunakan sebagai referensi cepat untuk perintah-perintah Git yang umum digunakan, seperti melihat riwayat commit, membuat dan menggabungkan branch, serta melakukan commit terhadap perubahan file.
SETUP #
Mengatur nama pengguna secara global. Ini digunakan sebagai identitas saat membuat atau mengubah riwayat (history) versi source code.
git config --global user.name "[Nama Lengkap]"
Mengatur alamat email secara global. Alamat email ini akan tercantum pada setiap commit, jadi pastikan menggunakan email yang valid — terutama jika Anda akan berkontribusi ke repositori publik.
git config --global user.email "[[email protected]]"
SETUP & INIT #
Membuat repositori Git baru di folder proyek yang ditentukan.
git init [nama-proyek]
Mengkloning (mengunduh) repositori remote beserta seluruh riwayat commit-nya ke komputer lokal.
git clone <URL-repositori>
INSPECT & COMPARE #
Melihat riwayat commit pada repositori Git.
git log
Menampilkan detail perbedaan (diff) untuk setiap commit, termasuk baris kode yang ditambahkan atau dihapus.
git log -p
Menampilkan sejumlah commit terbaru (contoh: 5 commit terakhir).
git log -n 5
Menampilkan daftar commit yang ada di branchA
tetapi tidak ada di branchB
.
git log branchB..branchA
Melihat riwayat commit yang hanya memengaruhi satu file tertentu (termasuk perubahan nama file jika terjadi).
git log --follow [nama_file]
Menampilkan riwayat commit dalam format ringkas dan visual menggunakan garis cabang, referensi, dan anotasi.
git log --oneline --graph --decorate
Menampilkan perubahan (diff) pada file tertentu dalam urutan commit-nya.
git log -p -- path/to/file.txt
Menampilkan riwayat commit dalam format pendek dan terformat khusus.
git log --pretty=format:"%h - %an, %ar : %s"
Menampilkan perbedaan (diff) antara branchA
dan branchB
. Tiga titik (...
) menunjukkan perbedaan sejak common ancestor keduanya.
git diff branchB...branchA
Menampilkan detail dari sebuah objek Git (commit, file, tag, dsb.) berdasarkan SHA-nya, dalam format yang mudah dibaca.
git show [SHA]
TRACKING PATH CHANGES #
Menghapus file dari project dan menandainya untuk dihapus pada commit berikutnya.
git rm [file]
Memindahkan atau mengganti nama file/direktori dalam project, dan mencatat perubahan tersebut untuk commit berikutnya.
git mv [path-lama] [path-baru]
Menampilkan riwayat commit beserta statistik perubahan, serta mendeteksi pemindahan atau penggantian nama file.
git log --stat -M
STAGE & SNAPSHOT #
Menampilkan status terkini dari working directory dan staging area, termasuk file yang dimodifikasi, ditambahkan, atau dihapus.
git status
Menambahkan file yang ditentukan ke staging area agar siap untuk dicommit.
git add [file]
Membatalkan penambahan file ke staging area (unstage), namun tetap mempertahankan perubahan pada working directory.
git reset [file]
Menampilkan perbedaan (diff) antara file di working directory dan file yang sudah di-stage.
git diff
Menampilkan perbedaan (diff) antara file di staging area dengan versi yang terakhir di-commit.
git diff --staged
Membuat commit dari perubahan yang ada di staging area, disertai pesan deskriptif singkat.
git commit -m "fix: send email"
BRANCH & MERGE #
Menampilkan daftar branch lokal, serta menandai branch yang sedang aktif dengan tanda *
.
git branch
Menampilkan semua branch yang ada di repositori, baik branch lokal maupun remote.
git branch -a
Menampilkan daftar branch yang ada di remote repository.
git branch -r
Membuat branch baru berdasarkan commit terakhir dari branch aktif saat ini.
git branch [nama-branch]
Berpindah (switch) ke branch lain.
git switch [nama-branch]
Catatan: Perintah git switch
adalah alternatif modern dan lebih jelas dari git checkout
untuk berpindah branch.
Mengambil file atau berpindah ke commit tertentu (digunakan untuk berbagai konteks: berpindah branch, commit, atau mengembalikan file).
git checkout [opsi]
Menggabungkan riwayat commit dari branch tertentu ke branch saat ini.
git merge [nama-branch]
TAGGING COMMITS #
Menampilkan daftar semua tag yang ada di dalam repositori Git.
git tag
Membuat tag baru (annotated atau lightweight) yang merujuk ke commit tertentu. Jika commit SHA tidak disebutkan, maka akan menggunakan commit terakhir (HEAD).
git tag [nama-tag] [commit-sha]
Membuat annotated tag yang menyimpan metadata tambahan seperti pesan, pembuat, dan tanggal — cocok untuk menandai versi rilis.
git tag -a [nama-tag] [commit-sha] -m "Pesan tag"
Catatan:
- Gunakan tag bertipe annotated (
-a
) untuk rilis karena lebih lengkap dan aman untuk distribusi. - Anda dapat menggunakan
git show [nama-tag]
untuk melihat detail dari sebuah tag.
SHARE & UPDATE #
Mengambil (fetch) semua branch dan update dari remote repository yang telah dikonfigurasi, tanpa menggabungkannya ke branch lokal.
git fetch [alias]
Mengambil pembaruan dari remote dan secara otomatis menghapus referensi (branch/tag) lokal yang sudah tidak ada lagi di remote.
git fetch --prune [remote]
Mengunduh perubahan terbaru dari remote repository dan langsung menggabungkannya (merge) ke branch aktif lokal.
git pull [remote]
Menggabungkan perubahan dari branch remote tertentu ke branch aktif lokal (digunakan setelah git fetch
).
git merge [alias]/[nama-branch]
Catatan:
alias
adalah nama remote, biasanyaorigin
.- Gunakan
git remote -v
untuk melihat alias remote yang tersedia. - Jika ingin menghindari merge dan lebih memilih rebase, bisa gunakan
git pull --rebase
.
REWRITE HISTORY #
Mengatur ulang (rebase) riwayat commit pada branch aktif, meletakkannya di atas commit terakhir dari branch yang ditentukan. Berguna untuk menjaga riwayat commit tetap bersih dan linear.
git rebase [nama-branch]
Mengembalikan seluruh direktori kerja dan riwayat ke kondisi commit tertentu. Perhatian: Ini akan menghapus semua perubahan setelah commit tersebut secara permanen.
git reset --hard [commit-sha]
Membatalkan efek dari commit tertentu dengan cara membuat commit baru yang membalikkan perubahan, tanpa menghapus commit lama dari riwayat.
git revert [commit-sha]
TEMPORARY COMMITS #
Menyimpan sementara perubahan yang belum di-commit (baik yang sudah maupun belum di-stage) ke dalam stack stash, dan mengembalikan working directory ke kondisi bersih.
git stash
Menampilkan daftar semua item yang tersimpan di dalam stack stash.
git stash list
Mengembalikan perubahan terakhir yang disimpan di stash ke working directory, dan menghapusnya dari daftar stash.
git stash pop
Menghapus item tertentu dari daftar stash (secara default, yang teratas).
git stash drop
Untuk menyimpan dengan nama deskriptif, gunakan:
git stash save "deskripsi singkat"
Referensi: