Empat belas chapter sejak awal section ini memperkenalkan perintah satu per satu: membuat repository, memeriksa status, mengisi staging area, mencatat commit, lalu membaca kembali hasilnya. Perintah-perintah itu bukan kumpulan yang berdiri sendiri — di pemakaian sehari-hari, semuanya bergulir menjadi satu lingkaran kerja. Chapter penutup ini merangkainya menjadi satu sesi utuh dari nol: repository baru, dua putaran sunting–status–add–commit, lalu pemeriksaan hasil dengan git log dan git diff — persis urutan yang akan kita jalani setiap hari bekerja dengan Git.

Alur Siklus Kerja #

Sebelum masuk ke latihan, mari lihat bentuk lingkarannya secara keseluruhan:

Empat langkah inti mengalir ke kanan: sunting berkas di working tree, periksa hasilnya dengan git status, pilih perubahan yang siap dengan git add, lalu bekukan dengan git commit. Setelah commit tersimpan, pemeriksaan riwayat — git log, git diff, git show — memutuskan langkah kerja berikutnya, dan lingkaran kembali ke suntingan baru. Satu hari kerja biasanya memuat belasan putaran lingkaran ini.

Menyiapkan Repository Baru #

Latihan memakai repository segar agar tidak membawa sisa perubahan chapter sebelumnya. Kita naik satu tingkat dari latihan-cabang ke direktori induk sandbox, lalu menyiapkan folder baru:

bash
cd ..
mkdir latihan-siklus
cd latihan-siklus
git init -b main

Output yang Dihasilkan:

text
Initialized empty Git repository in /home/z/my-project/tutorial-extracted/work/sandbox/dasar-repository/latihan-siklus/.git/

Jalur pada keluaran menyesuaikan lokasi direktori komputer masing-masing. Selanjutnya identitas lokal — setiap repository latihan menyimpan identitasnya sendiri, pola yang diperkenalkan chapter Konfigurasi Identitas :

bash
git config user.name "Budi Santoso"
git config user.email "[email protected]"

Putaran Pertama: Dua Berkas, Satu Commit #

Sesi kerja dibuka dengan dua berkas — halaman depan proyek dan satu modul program:

bash
printf '# Aplikasi Catatan\n\nAplikasi latihan untuk siklus kerja Git.\n' > README.md
mkdir src
printf 'fitur: mencatat ide harian\n' > src/app.txt
git status

Output yang Dihasilkan:

text
On branch main

No commits yet

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

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

Dua tanda yang khas repo baru: baris No commits yet menegaskan riwayat masih kosong, dan seluruh isi src/ tampil dipadatkan sebagai satu entri src/ karena belum ada satu pun berkas di dalamnya yang dikenal Git. Kita pilih hanya README.md yang dicatat lebih dulu — modul programnya akan menunggu putaran berikutnya:

bash
git add README.md
git status

Output yang Dihasilkan:

text
On branch main

No commits yet

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

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

README.md kini berlabel new file di keranjang, sementara src/ tetap untracked — seleksi bertahap seperti pada chapter git add . Perhatikan petunjuk unstagenya berbeda dari biasanya: git rm --cached, bukan git restore --staged.

Commit pertama dicatat dengan tanggal deterministik — pola Course agar hash contoh konsisten antarchapter, lengkap penjelasannya di chapter Repository dan Commit :

bash
GIT_AUTHOR_DATE="2026-10-13T11:00:00+07:00" GIT_COMMITTER_DATE="2026-10-13T11:00:00+07:00" git commit -m "Mulai proyek aplikasi catatan"

Output yang Dihasilkan:

text
[main (root-commit) 81eb535] Mulai proyek aplikasi catatan
 1 file changed, 3 insertions(+)
 create mode 100644 README.md

Tanda (root-commit) hanya muncul pada commit paling pertama sebuah repository — akar dari seluruh riwayatnya. Hash 81eb535 berbeda di mesin pembaca karena dihitung dari isi commit; commit biasa sehari-hari cukup dengan git commit -m "pesan" tanpa variabel tanggal.

Putaran Kedua: Suntingan dan Berkas Baru Sekaligus #

Putaran kedua diawali kerja campuran: memperluas README sekaligus menambah modul kedua di src/:

bash
printf '\n## Rencana\n- menandai ide selesai\n' >> README.md
printf 'utilitas: memformat tanggal\n' > src/util.txt
git status

Output yang Dihasilkan:

text
On branch main
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:   README.md

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

no changes added to commit (use "git add" and/or "git commit -a")

Kali ini git status melaporkan kombinasi dua kelompok: README.md tersunting (modified, belum di-stage) dan src/ masih untracked — kini berisi dua berkas yang tak dikenal. Keduanya memang satu tema kerja, jadi kali ini seluruhnya naik ke keranjang:

bash
git add -A
git status -s

Output yang Dihasilkan:

text
M  README.md
A  src/app.txt
A  src/util.txt

Format pendek membaca cepat: M berarti suntingan README sudah di-stage, A berarti kedua berkas src/ baru masuk keranjang. Commit keduanya:

bash
GIT_AUTHOR_DATE="2026-10-13T11:10:00+07:00" GIT_COMMITTER_DATE="2026-10-13T11:10:00+07:00" git commit -m "Tambah modul sumber dan perluas README"

Output yang Dihasilkan:

text
[main 11d3996] Tambah modul sumber dan perluas README
 3 files changed, 5 insertions(+)
 create mode 100644 src/app.txt
 create mode 100644 src/util.txt

Tiga berkas dalam satu commit — src/app.txt yang menunggu sejak putaran pertama ikut tercatat. Baris create mode hanya dimiliki berkas baru; suntingan README diwakili angka insertions.

Memeriksa Hasil Sesi #

Sesi ditutup dengan dua pemeriksaan. Yang pertama: riwayat beserta statistiknya —

bash
git log --oneline --stat

Output yang Dihasilkan:

text
11d3996 Tambah modul sumber dan perluas README
 README.md    | 3 +++
 src/app.txt  | 1 +
 src/util.txt | 1 +
 3 files changed, 5 insertions(+)
81eb535 Mulai proyek aplikasi catatan
 README.md | 3 +++
 1 file changed, 3 insertions(+)

Dua commit dengan statistik masing-masing — ringkasan sesi kerja kita dari awal. Pemeriksaan kedua menampilkan isi commit terakhir, memakai bentuk HEAD~1 yang berarti “satu commit sebelum HEAD”:

bash
git diff HEAD~1

Output yang Dihasilkan:

text
diff --git a/README.md b/README.md
index 65ac230..ccbfc62 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,6 @@
 # Aplikasi Catatan
 
 Aplikasi latihan untuk siklus kerja Git.
+
+## Rencana
+- menandai ide selesai
diff --git a/src/app.txt b/src/app.txt
new file mode 100644
index 0000000..f0f5b03
--- /dev/null
+++ b/src/app.txt
@@ -0,0 +1 @@
+fitur: mencatat ide harian
diff --git a/src/util.txt b/src/util.txt
new file mode 100644
index 0000000..9b966f5
--- /dev/null
+++ b/src/util.txt
@@ -0,0 +1 @@
+utilitas: memformat tanggal

Formatnya persis chapter git diff , dengan dua hal baru: berkas baru ditandai new file mode 100644 dan sisi lamanya ditulis --- /dev/null karena memang belum pernah ada. Riwayat dua commit, working tree bersih — lingkaran siklus kembali ke titik suntingan berikutnya.

Peta Perintah Inti Section #

Seluruh perintah yang dipakai sepanjang section ini dirangkum dalam satu tabel:

PerintahPeran dalam siklusChapter
git initMembuat repository barugit init
git statusMemeriksa keadaan working tree dan staging areagit status
git addMemilih perubahan yang masuk staging areagit add
git commitMembekukan staging area menjadi snapshotgit commit
git logMenjelajah riwayat commitgit log
git diffMembandingkan dua keadaan berkasgit diff
git showMembedah satu commit atau satu berkas lamagit show
git helpMembuka dokumentasi perintahgit help

Siklus dasar ini cukup untuk bekerja sendiri — dari repository kosong sampai riwayat yang tertata. Namun di antara suntingan dan commit sering kali kita perlu berubah pikiran: membatalkan staging, membuang suntingan yang keliru, atau memulihkan berkas yang terhapus. Semua manuver di fase rawan itu adalah fokus section berikutnya: Melacak Perubahan .