Memeriksa keadaan

Membaca keadaan repository secara rutin dengan git status sebagai layar utama pekerjaan sehari-hari.

Daftar isi

git status adalah layar utama pekerjaan Git sehari-hari, yaitu perintah yang menjawab tiga pertanyaan dasar pada saat yang sama: di branch apa posisi sekarang, perubahan apa yang menunggu di staging area, dan perubahan apa yang belum tersentuh di working directory. Topik ini membahas cara membaca setiap seksi keluarannya, format singkatnya, dan kebiasaan memanggilnya secara rutin sebelum setiap keputusan.

Keadaan repository kosong#

Jalankan git status pada repository yang baru dibuat dan belum memiliki commit.

bash
rm -rf /tmp/lab-status
mkdir /tmp/lab-status
cd /tmp/lab-status
git init -b main
git status
text Keluaran
Initialized empty Git repository in /tmp/lab-status/.git/
On branch main

No commits yet

nothing to commit (create/copy files and use "git add" to track)

Baris pertama menyatakan branch aktif, yaitu main. Seksi No commits yet menandakan riwayat masih kosong, dan baris terakhir menyatakan tidak ada perubahan yang dapat di-commit. Bagian dalam tanda kurung adalah saran tindakan yang dipilih Git sesuai keadaan, dan sarannya selalu dapat diikuti dengan aman.

Untracked, staged, dan modified#

Buat dua berkas baru, lalu amati statusnya.

bash
printf "Sambungan pertama.\n" > sapa.txt
printf "# Catatan\n" > catatan.md
git status
text Keluaran
On branch main

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
	catatan.md
	sapa.txt

nothing added to commit but untracked files present (use "git add" to track)

Seksi Untracked files berisi berkas yang ada di working directory tetapi belum pernah dicatat Git. Berkas dalam keadaan ini tidak akan pernah masuk commit meskipun perintah git commit dipanggil, karena commit hanya mengambil isi staging area. Stage salah satu berkas, lalu perbarui berkas yang satunya.

bash
git add sapa.txt
printf "Sambungan diperbarui.\n" > sapa.txt
git status
text Keluaran
On branch main

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
	new file:   sapa.txt

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
	modified:   sapa.txt

Untracked files:
  (use "git add <file>..." to include in what will be committed)
	catatan.md

Tiga seksi muncul sekaligus, dan inilah keadaan yang paling sering ditemui pada pekerjaan nyata. sapa.txt muncul dua kali dengan dua arti berbeda: versi yang di-add menunggu di staging area, sedangkan penyuntingan setelahnya hanya ada di working directory. git commit akan menyimpan versi yang di-add, dan git add perlu dipanggil lagi apabila versi terakhir juga ingin ikut.

Format singkat dengan git status -s#

Format panjang memuat banyak teks bantu, sedangkan opsi -s menampilkan status singkat satu baris per berkas yang ringkas untuk dibaca cepat.

bash
git status -s
text Keluaran
AM sapa.txt
?? catatan.md

Dua kolom kode muncul di kiri setiap baris, yaitu kolom staging dan kolom working directory. Huruf pada kolom pertama menyatakan keadaan staging area, sedangkan kolom kedua menyatakan keadaan working directory. Tabel berikut memuat kode yang paling sering muncul.

KodeArtiLokasi perubahan
??untrackedberkas baru yang belum pernah dicatat
Aaddedberkas baru yang menunggu di staging area
Mmodified, stagedperubahan yang menunggu di staging area
Mmodified, belum stagedperubahan yang hanya ada di working directory
Ddeleted, stagedpenghapusan berkas yang menunggu di staging area

Perhatikan posisi huruf dan spasi: M berarti sudah di-add, sedangkan M berarti belum. Baris A sapa.txt dan M sapa.txt pada keluaran di atas persis menggambarkan dua keadaan berkas yang sama, sehingga format ini disukai untuk pemeriksaan cepat sebelum staging.

Kebiasaan memanggil status#

Karena git status tidak mengubah apa pun, perintah ini aman dipanggil kapan saja dan tidak menimbulkan risiko. Kebiasaan yang menjaga akurasi keputusan adalah memanggilnya sebelum git add, sesudah git add sebelum git commit, dan sesudah operasi yang berisiko seperti merge atau reset. Pesan working tree clean pada akhirnya juga menjadi tanda yang dapat dicari untuk memastikan tidak ada pekerjaan yang tertinggal sebelum berpindah tugas.

Ringkasan#

  • git status melaporkan branch aktif, isi staging area, dan perubahan working directory dalam satu keluaran.
  • Berkas untracked tidak pernah masuk commit sebelum di-add, dan berkas yang diedit setelah di-add perlu di-add ulang.
  • Opsi -s menampilkan status dua kolom per berkas: kolom kiri untuk staging area dan kolom kanan untuk working directory.
  • git status hanya membaca keadaan, sehingga aman dipanggil sebelum setiap keputusan.

Referensi#