Alur kerja Git harian menyuruh kita mengetik hal yang sama berulang-ulang: git status berkali-kali sebelum commit, git log --oneline --graph setiap kali membaca riwayat. Perintah-perintah itu pendek tetapi frekuensinya tinggi, dan Git punya mekanisme resmi untuk memendekkannya: alias — nama pintasan yang tersimpan di konfigurasi lalu dipakai persis seperti perintah bawaan. Karena alias ditulis dengan git config biasa, seluruh mekanisme level dan prioritas dari chapter git config berlaku juga di sini; kita tinggal fokus ke pola pembuatannya dan batas-batasnya.

Membuat Alias #

Pola pembuatannya satu baris: kunci alias.<nama> dengan nilai berupa perintah yang hendak dipendekkan:

bash
git config --global alias.st "status -sb"
git config --global alias.lg "log --oneline --graph"

Mari kita bedah kedua perintah tersebut:

  1. --global menempatkan alias di ~/.gitconfig sehingga berlaku untuk semua repository milik akun.
  2. alias.st mendaftarkan nama baru st — bagian setelah titik menjadi nama perintah pintasan.
  3. status -sb adalah perintah yang dijalankan saat kita mengetik git st: status ringkas dengan info branch.
  4. alias.lg memendekkan kombinasi favorit semua orang: riwayat satu baris per commit dengan gambar graph.

Nama alias tidak boleh memuat spasi; nilainya boleh memuat flag apa pun. Hasilnya tersimpan sebagai section tersendiri di ~/.gitconfig:

ini
[user]
	email = [email protected]
[alias]
	st = status -sb
	lg = log --oneline --graph

Berkas di atas juga memuat kunci lain yang sudah terpasang — identitas email dari chapter sebelumnya — karena satu berkas menampung seluruh konfigurasi global. Daftar seluruh alias aktif bisa dilihat dengan pola baca dari chapter git config :

bash
git config --global --list

Output yang Dihasilkan:

text
[email protected]
alias.st=status -sb
alias.lg=log --oneline --graph

Memakai Alias #

Alias dipakai dengan mengetik namanya setelah git, sama seperti perintah bawaan. Untuk demo yang realistis, repository sandbox berisi tiga commit — dua di antaranya digabung lewat merge — dan satu perubahan yang belum di-commit. Kondisi pembuatan repository serta merge seperti ini dibahas tuntas di section Dasar Repository dan Branch dan Merging ; kita langsung lihat hasil pakai aliasnya:

bash
git st

Output yang Dihasilkan:

text
## main
 M catatan.txt

Dua baris itu adalah seluruh isi git status -sb: branch aktif di baris pertama, perubahan yang belum di-staging di baris kedua. Versi lengkapnya butuh belasan baris dengan petunjuk di setiap bagian — untuk pemeriksaan kilat, alias ini menghemat waktu baca. Sekarang riwayatnya:

bash
git lg

Output yang Dihasilkan:

text
*   1f739d8 Gabungkan fitur-pengingat
|\
| * d1b64e4 Tambah catatan kedua
|/
* 3104e5e Commit pertama

Deretan identitas commit seperti 1f739d8 berbeda di tiap mesin. Argumen tambahan tetap diteruskan ke perintah aslinya — git lg --all, misalnya, menjalankan git log --oneline --graph --all; kita akan sering memakai perilaku ini untuk flag yang tidak kita tempel di alias.

Alias Eksternal dengan Tanda Seru #

Nilai alias yang diawali tanda seru (!) tidak dijalankan sebagai subperintah Git, melainkan sebagai perintah shell. Kebutuhan paling umum: alias yang bekerja pada repository tertentu dari lokasi mana pun, memakai git -C <jalur> yang mengarahkan Git ke direktori lain:

bash
git config --global alias.proyek '!git -C ~/proyek-utama status -sb'

Bagian !git -C ~/proyek-utama membuka repository di ~/proyek-utama tanpa memedulikan direktori saat ini, lalu status -sb dijalankan pada repository itu. Nilai seperti ini perlu kutip ganda karena memuat spasi dan ~ yang harus diteruskan ke shell. Karena ~ hanya ada di lingkungan Unix, pengguna Windows memakai jalur seperti %USERPROFILE% atau jalur lengkap. Kita uji dari dalam repository lain:

bash
cd ../demo-ch12
git proyek

Output yang Dihasilkan:

text
## main

Alias membaca status ~/proyek-utama meskipun kita sedang berada di repository demo-ch12. Begitu repository sasaran punya perubahan, keluarannya lengkap — setelah echo "gagasan baru" >> ~/proyek-utama/ide.txt:

bash
git proyek

Output yang Dihasilkan:

text
## main
 M ide.txt

Keterbatasan Alias #

Alias adalah pengganti nama, bukan perintah baru. Konsekuensinya:

  • Tanpa dokumentasi tersendiri. git help -a memang menampilkan alias di bagian Command aliases, tetapi hanya nama dan perluasannya; git st --help hanya menerjemahkan ke bantuan perintah aslinya. Tidak ada tempat menuliskan deskripsi alias buatan sendiri, jadi daftar git config --get-regexp '^alias\.' tetap rujukan utama.
  • Nama bentrok diabaikan. Alias yang namanya sama dengan perintah bawaan — misalnya alias.status — diabaikan Git; perintah bawaan selalu menang, seperti yang bisa kita buktikan dengan mendaftarkan lalu menjalankan git status versi panjang.
  • Tanpa berbagi otomatis. Alias hidup di konfigurasi mesin, jadi rekan tim tidak melihat alias kita; berbeda dengan .gitattributes, tidak ada berkas alias yang ikut repository.

Untuk kebutuhan yang lebih besar dari penggantian nama — misalnya command baru dengan banyak opsi — ekosistem menyediakan skrip terpisah atau perintah khusus, bukan alias.

Menghapus Alias #

Penghapusan memakai --unset seperti kunci lain:

bash
git config --global --unset alias.st

Setelahnya, isi [alias] di ~/.gitconfig tinggal lg dan proyek. Alias yang sudah dihapus kembali menjadi perintah tak dikenal — Git bahkan menawarkan kemiripan ejaan:

bash
git st

Output yang Dihasilkan:

text
git: 'st' is not a git command. See 'git --help'.

The most similar commands are
	status
	reset
	stage
	stash

Daftar usulan pada keluaran nyata di atas menjorok dengan karakter tab — Git memang menampilkannya begitu. Kumpulan alias produktif lain yang layak dicontoh tersedia di Pro Git: Git Aliases . Dengan perintah harian kini ringkas, satu bab konfigurasi masih tersisa untuk lingkungan jaringan terbatas: proxy, topik chapter berikutnya.