git commit -m "pesan" sudah menjadi refleks setelah beberapa section. Padahal git commit membawa seperangkat opsi yang mengubah perilakunya: pintasan yang melompati git add, opsi penanda untuk titik kosong dalam riwayat, penulisan ulang commit terakhir, sampai pencatatan orang lain sebagai penulis. Memahami kapan tiap opsi layak dipakai — dan kapan justru berbahaya — membedakan pengguna Git yang sekadar jalan dengan yang efisien. Chapter ini mengetes setiap opsi pada repository daftar belanja yang sama, dengan keluaran nyata di tiap langkah.

Peta Opsi #

OpsiPeran
-m <pesan>membawa pesan dari argumen; diulang untuk paragraf tambahan
-amen-stage seluruh berkas terlacak yang tersunting, lalu langsung commit
--amendmengganti commit terakhir dengan commit baru hasil suntingan
--allow-emptymengizinkan commit meski tidak ada perubahan
--no-editmemakai pesan yang sudah tersedia tanpa membuka editor
-vmenyisipkan diff ke buffer editor sebagai bahan referensi
--author, --datemenimpa identitas dan waktu penulis

-m: Satu Argumen untuk Tiap Paragraf #

Opsi -m membawa satu argumen pesan; opsi ini boleh diulang dan setiap pengulangan menjadi satu paragraf terpisah. Kita siapkan repository latihan dan mencoba keduanya berurutan:

bash
mkdir latihan-opsi && cd latihan-opsi
git init -b main
git config user.name "Budi Santoso"
git config user.email "[email protected]"
printf 'Belanja mingguan:\n- beras\n- telur\n' > daftar.txt
git add daftar.txt
git commit -m "Tambah daftar belanja mingguan"

Output yang Dihasilkan:

text
[main (root-commit) 19648dc] Tambah daftar belanja mingguan
 1 file changed, 3 insertions(+)
 create mode 100644 daftar.txt

Satu -m cukup untuk subjek saja. Dua -m menghasilkan subjek plus body — struktur yang dibahas tuntas di chapter Menulis Commit Message :

bash
printf 'Belanja mingguan:\n- beras\n- telur\n- minyak\n' > daftar.txt
git add daftar.txt
git commit -m "Tambah minyak ke daftar belanja" \
           -m "Stok minyak habis tiga hari lebih cepat dari perkiraan."

Output yang Dihasilkan:

text
[main 17169f9] Tambah minyak ke daftar belanja
 1 file changed, 1 insertion(+)

Ringkasan keluaran hanya menampilkan subjek — baris pertama pesan; body lengkap tersimpan di objek commit dan terbaca lewat git log -1.

-a: Pintasan untuk Berkas Terlacak #

Opsi -a merangkap dua langkah: seluruh suntingan berkas terlacak otomatis di-stage, lalu commit dibuat — setara dengan git add -u disusul git commit, sebagaimana dicatat di section Dasar Repository . Kita sunting daftar dan sekalian membuat berkas baru:

bash
printf 'Belanja mingguan:\n- beras\n- telur\n- minyak\n- gula\n' > daftar.txt
printf 'Catatan: belanja Sabtu pagi.\n' > pengingat.txt
git status -s

Output yang Dihasilkan:

text
 M daftar.txt
?? pengingat.txt

Peta menunjukkan satu suntingan terlacak dan satu berkas baru. Dengan gabungan -am, suntingan langsung dicatat:

bash
git commit -am "Tambah gula ke dafar belanja"

Output yang Dihasilkan:

text
[main 6a43904] Tambah gula ke dafar belanja
 1 file changed, 1 insertion(+)

Dan keadaan sesudahnya membuktikan batasan pentingnya:

bash
git status -s

Output yang Dihasilkan:

text
?? pengingat.txt

–allow-empty: Commit Penanda #

Git menolak commit ketika staging area kosong — kecuali kita sengaja ingin membuat penanda di riwayat. Opsi --allow-empty mengizinkannya:

bash
git commit --allow-empty -m "Tandai mulai perapian daftar"

Output yang Dihasilkan:

text
[main 91667dc] Tandai mulai perapian daftar

Perhatikan keluarannya: tanpa baris files changed, karena memang tidak ada berkas yang berubah. Commit kosong seperti ini berguna sebagai penanda struktural — titik sebelum eksperimen besar, batas antar fase kerja, atau patokan yang mudah dirujuk. Perintah git commit -m "..." biasa sudah pernah menolak dengan galat nothing to commit ketika staging area kosong; opsi ini membalikkan keputusan itu.

–amend dan –no-edit: Menulis Ulang Commit Terakhir #

Barusan kita mengetik dafar alih-alih daftar — dan pesan itu sudah tercatat. Opsi --amend mengganti commit terakhir dengan commit baru hasil suntingan:

bash
git commit --amend -m "Tambah gula ke daftar belanja"

Output yang Dihasilkan:

text
[main 1cc9e70] Tambah gula ke daftar belanja
 Date: Tue Oct 13 09:20:00 2026 +0700
 1 file changed, 1 insertion(+)

Dua hal penting pada keluaran itu. Pertama, hash berubah dari 6a43904 menjadi 1cc9e70 — amend tidak “menyunting” commit lama, melainkan membuat objek commit baru yang menggantikannya; mekanisme lengkapnya dibedah di chapter Amend Commit . Kedua, baris Date: menampilkan 09:20:00 — waktu author yang dipertahankan dari commit asli, bukan waktu amend dijalankan.

Teman setia --amend adalah --no-edit: memakai pesan lama tanpa membuka editor. Kombinasinya — misalnya git commit -a --amend --no-edit — adalah resep standar untuk menambahkan berkas yang terlewat ke commit terakhir. Namun --no-edit tidak berdiri sendiri; git menolaknya ketika tidak ada pesan yang bisa dipakai ulang:

bash
printf 'Belanja mingguan:\n- beras\n- telur\n- minyak\n- gula\n- teh\n' > daftar.txt
git commit -a --no-edit

Output yang Dihasilkan:

text
Aborting commit due to empty commit message.

-v: Diff di Dalam Editor #

Menulis pesan yang akurat butuh melihat apa yang berubah — dan opsi -v (verbose) menempelkan diff-nya ke buffer editor. Perintah git commit -v membuka editor dengan templat plus isi diff di bagian bawah:

bash
git add daftar.txt
git commit -v

Buffer editor yang terbuka memuat status, garis gunting, lalu diff:

text

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# On branch main
# Changes to be committed:
#	modified:   daftar.txt
#
# Untracked files:
#	pengingat.txt
#
# ------------------------ >8 ------------------------
# Do not modify or remove the line above.
# Everything below it will be ignored.
diff --git a/daftar.txt b/daftar.txt
index 2657f6a..b00e713 100644
--- a/daftar.txt
+++ b/daftar.txt
@@ -3,3 +3,4 @@ Belanja mingguan:
 - telur
 - minyak
 - gula
+- teh

Bagian atas adalah area pesan seperti biasa. Baris ------------------------ >8 ------------------------ adalah garis gunting: semua baris di bawahnya diabaikan saat pesan disimpan — diff itu murni bahan bacaan, bukan bagian pesan. Kehadiran diff membuat kita bisa menulis body yang benar-benar menjelaskan perubahan tanpa bergantung ingatan. Setelah pesan ditulis dan berkas disimpan, commit tercatat normal:

bash
git log -1 --stat

Output yang Dihasilkan:

text
commit 4df67e04b52310bc822612e9453db8f9a3e29158
Author: Budi Santoso <[email protected]>
Date:   Tue Oct 13 09:45:00 2026 +0700

    Tambah teh ke daftar belanja

 daftar.txt | 1 +
 1 file changed, 1 insertion(+)

–author dan –date: Mencatat Pihak Lain #

Situasi nyata yang sering muncul: Siti menulis suntingan di komputernya, Budi yang mencatatnya ke repository. Opsi --author menimpa identitas penulis, dan --date menimpa waktu penulis — committer tetap diambil dari konfigurasi lokal:

bash
printf 'Belanja mingguan:\n- beras\n- telur\n- minyak\n- gula\n- teh\n- kopi\n' > daftar.txt
git add daftar.txt
git commit --author="Siti Rahma <[email protected]>" \
           --date="2026-10-12T16:00:00+07:00" \
           -m "Tambah kopi ke daftar belanja"

Output yang Dihasilkan:

text
[main 552a54a] Tambah kopi ke daftar belanja
 Author: Siti Rahma <[email protected]>
 Date: Mon Oct 12 16:00:00 2026 +0700
 1 file changed, 1 insertion(+)

Keluaran commit jujur mengumumkan kedua penimpaan itu. Identitas ganda yang tersimpan terlihat utuh dengan format fuller:

bash
git log --format=fuller -1

Output yang Dihasilkan:

text
commit 552a54a9b73707e5cc57e04a7ed139ed7824a550
Author:     Siti Rahma <[email protected]>
AuthorDate: Mon Oct 12 16:00:00 2026 +0700
Commit:     Budi Santoso <[email protected]>
CommitDate: Tue Oct 13 09:55:00 2026 +0700

    Tambah kopi ke daftar belanja

Author Siti dengan waktu kemarin sore; committer Budi dengan waktu hari ini. Perbedaan author–committer inilah yang dijelaskan konseptual di chapter Anatomi Commit — dan otomatis muncul pula saat cherry-pick serta rebase membawa commit orang lain. Selain opsi, ketiga nilai itu bisa diatur lewat variabel lingkungan GIT_AUTHOR_NAME, GIT_AUTHOR_EMAIL, dan GIT_AUTHOR_DATE — mekanisme yang dipakai alat-alat otomatis saat membuat commit atas nama penggunanya.

Riwayat akhir sesi kita hari ini:

bash
git log --oneline

Output yang Dihasilkan:

text
552a54a Tambah kopi ke daftar belanja
4df67e0 Tambah teh ke daftar belanja
91667dc Tandai mulai perapian daftar
1cc9e70 Tambah gula ke daftar belanja
17169f9 Tambah minyak ke daftar belanja
19648dc Tambah daftar belanja mingguan

Enam commit dari satu perintah dengan berbagai wajah. Satu di antaranya — 1cc9e70 yang lahir dari --amend — menyimpan perilaku yang cukup dalam untuk dibedah tersendiri: bagaimana commit lama tergantikan, mengapa hash wajib berubah, dan kapan operasi ini menjadi berbahaya. Semua itu pokok bahasan chapter berikutnya: Amend Commit .