git init mengubah folder biasa jadi repository Git, dan git status memberi tahu keadaan tiap file di dalamnya. Bayangin kamu baru pindah kos dan mulai mencatat barang-barangmu di buku inventaris. Hari pertama bukunya masih kosong, jadi semua barang di kamar statusnya "belum dicatat". git init itu membuka buku kosong tadi, dan git status itu mencocokkan isi kamar dengan isi buku.
🧪 Tebakan cepat: kamu menjalankan
git initdi folder yang sudah jadi repository. Riwayat commit-nya terhapus, gak? Tebak dulu, jawabannya ada di bagian "Kalau git init dijalankan lagi".
git init: folder jadi repository
Folder proyeknya berisi index.html dan style.css. Sebelum git init, Git belum mengenal folder ini:
$ git status
fatal: not a git repository (or any of the parent directories): .git
$ git init
Initialized empty Git repository in /project/.git/
fatal: not a git repositoryartinya Git mencari folder.gitdi folder ini dan di semua folder di atasnya, dan gak ketemu.git initmembuat folder tersembunyi.git. Di situlah Git menyimpan semua datanya: commit, branch, dan pengaturan repo. File-filemu sendiri gak diubah atau dipindah.- Folder yang namanya diawali titik disembunyikan. Di terminal,
ls -amenampilkannya.
Branch pertama di simulator ini bernama main. Git di komputermu mungkin menamainya master dan menampilkan hint soal itu. Supaya sama, jalankan sekali git config --global init.defaultBranch main.
git status: mencocokkan folder dengan catatan Git
Langsung setelah git init:
$ git status
On branch main
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
index.html
style.css
nothing added to commit but untracked files present (use "git add" to track)
On branch main: kamu sedang di branchmain.No commits yet: belum ada satu pun commit.Untracked files: file yang ada di folder tapi belum pernah dicatat Git. Kedua file kita masih di sini.- Baris dalam kurung adalah saran perintah berikutnya. Git sering memberi petunjuk begini, jadi biasakan membacanya.
Seiring kerjamu, git status menampilkan bagian lain. Ini semua yang akan kamu temui:
Bagian di git status |
Artinya |
|---|---|
Untracked files |
file baru, belum pernah dicatat Git |
Changes to be committed |
sudah dipilih dengan git add, akan masuk commit berikutnya |
Changes not staged for commit |
sudah pernah dicatat, lalu diubah, tapi belum dipilih lagi |
nothing to commit, working tree clean |
semua file sama dengan commit terakhir |
git add dan git commit kamu pelajari di pelajaran berikutnya. git status sendiri cuma membaca, gak mengubah apa pun, jadi aman dijalankan sesering mungkin.
Kalau git init dijalankan lagi
$ git init
Reinitialized existing Git repository in /project/.git/
Git cuma memeriksa ulang folder .git yang sudah ada. Commit, branch, dan file-mu tetap utuh: gak ada yang dihapus, dan gak ada repo kedua. Itu jawaban tebakannya.
📌 Versi ringkas: git status -s
git status -s (atau --short) menampilkan satu baris per file:
$ git status -s
?? index.html
?? style.css
?? artinya untracked. Nanti kamu juga ketemu A (file baru yang sudah di-add) dan M (file yang diubah).
⚠️ Jebakan yang sering ketemu
git initdi folder yang salah. Jalankan di folder proyek, bukan di folder home atau Desktop. Kalau salah tempat,git statusmenampilkan ratusan untracked file. Cek posisimu dulu denganpwd.- Repo di dalam repo.
git initlagi di subfolder sebuah repository bikin repository terpisah di dalamnya, dan repository luar gak lagi menyimpan isi subfolder itu dengan normal. Cukup satugit initdi folder paling atas proyek. - Menghapus folder
.git. Semua riwayat hilang dan foldernya kembali jadi folder biasa. - Mengira
git statusmenyimpan sesuatu. Status cuma menampilkan. Gak ada yang tersimpan sampai kamu commit.
TL;DR: git init membuat folder tersembunyi .git dan menjadikan folder itu repository. Menjalankannya lagi aman: Git menjawab Reinitialized existing Git repository dan gak menghapus apa pun. git status membandingkan folder dengan catatan Git: Untracked files untuk file yang belum pernah dicatat, Changes to be committed untuk yang sudah di-add, Changes not staged for commit untuk yang diubah tapi belum di-add, dan nothing to commit, working tree clean kalau semuanya sama dengan commit terakhir. git status -s versi ringkasnya. Status cuma membaca, jadi jalankan sesering mungkin.