Commit pertama menempatkan fondasi; bagian ini mengisi rumahnya. Tiga perubahan nyata menyusul — berkas .gitignore, dokumen panduan struktur catatan, dan daftar isi pada README.md — dengan satu aturan yang dipegang sejak sekarang: satu satuan kerja, satu commit. Aturan itu membuat setiap baris git log terbaca sebagai daftar pekerjaan, bukan tumpukan “update lagi”. Di akhir bagian, git log --oneline --stat menampilkan seluruh empat commit beserta jejak perubahannya, dan satu latihan kecil menantang kita menambah catatan pertama milik sendiri.

Menambahkan .gitignore #

Repository catatan pasti menghasilkan berkas sementara: berkas cadangan editor, jejak sistem operasi, dan draf yang belum layak disimpan. .gitignore mencegah ketiganya masuk ke riwayat sejak dini:

bash
cat > .gitignore <<'EOF'
*.tmp
.DS_Store
draft-*
EOF

Isinya tiga pola sederhana:

bash
cat .gitignore

Output yang Dihasilkan:

text
*.tmp
.DS_Store
draft-*

Baris pertama menyamarkan semua berkas berakhiran .tmp; baris kedua menyembunyikan berkas metadata .DS_Store yang dibuat macOS di setiap folder; baris ketiga menyasar semua draf catatan yang kita awali dengan draft- — konvensi yang akan dipakai pada latihan di akhir bagian. Pola-pola lengkap .gitignore dibahas pada chapter Pola .gitignore , dan sintaksnya terdokumentasi utuh di dokumentasi resmi gitignore .

Periksa status, lalu simpan sebagai satu commit terpisah:

bash
git status

Output yang Dihasilkan:

text
On branch main
Untracked files:
  (use "git add <file>..." to include in what will be committed)
	.gitignore

nothing added to commit but untracked files present (use "git add" to track)
bash
git add .gitignore
git commit -m "chore: tambahkan .gitignore"

Output yang Dihasilkan (perintah terakhir):

text
[main d047b69] chore: tambahkan .gitignore
 1 file changed, 3 insertions(+)
 create mode 100644 .gitignore

Menambahkan Panduan Struktur Catatan #

Buku catatan hanya terbaca baik bila strukturnya konsisten, jadi aturannya perlu ditulis. Dokumen pertama masuk ke folder docs/ — konvensi umum untuk memisahkan dokumen dari kode:

bash
mkdir docs
cat > docs/panduan.md <<'EOF'
# Panduan Struktur Catatan

Setiap catatan disimpan sebagai satu berkas Markdown di dalam folder sesuai topiknya.

## Aturan Penamaan

- Nama berkas memakai huruf kecil dan tanda hubung: `git-dasar.md`, bukan `Git Dasar.md`.
- Awali dengan topik lalu subtopik: `git-branch.md`, `git-merge.md`.

## Struktur Isi

1. Judul catatan sebagai satu heading level 1.
2. Ringkasan satu paragraf: apa yang dipelajari.
3. Bagian inti: konsep, contoh, dan catatan pribadi.
4. Tautan sumber belajar di bagian akhir.

## Konvensi Lain

- Satu catatan membahas satu topik.
- Simpan draf dengan awalan `draft-` agar diabaikan Git (lihat `.gitignore`).
EOF
bash
cat docs/panduan.md

Output yang Dihasilkan:

text
# Panduan Struktur Catatan

Setiap catatan disimpan sebagai satu berkas Markdown di dalam folder sesuai topiknya.

## Aturan Penamaan

- Nama berkas memakai huruf kecil dan tanda hubung: `git-dasar.md`, bukan `Git Dasar.md`.
- Awali dengan topik lalu subtopik: `git-branch.md`, `git-merge.md`.

## Struktur Isi

1. Judul catatan sebagai satu heading level 1.
2. Ringkasan satu paragraf: apa yang dipelajari.
3. Bagian inti: konsep, contoh, dan catatan pribadi.
4. Tautan sumber belajar di bagian akhir.

## Konvensi Lain

- Satu catatan membahas satu topik.
- Simpan draf dengan awalan `draft-` agar diabaikan Git (lihat `.gitignore`).

Statusnya menampilkan satu perilaku menarik:

bash
git status

Output yang Dihasilkan:

text
On branch main
Untracked files:
  (use "git add <file>..." to include in what will be committed)
	docs/

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

Git meringkas seluruh folder menjadi satu baris docs/ karena belum ada satu berkas pun di dalamnya yang dilacak — folder itu sendiri tidak pernah dilacak, hanya berkasnya. Simpan panduan sebagai commit kedua:

bash
git add docs/panduan.md
git commit -m "docs: tambahkan panduan struktur catatan"

Output yang Dihasilkan (perintah terakhir):

text
[main fd7e5b9] docs: tambahkan panduan struktur catatan
 1 file changed, 20 insertions(+)
 create mode 100644 docs/panduan.md

Melengkapi README dengan Daftar Isi #

Dokumen mulai bertambah, jadi README.md perlu memandu pembacanya. Sunting README menjadi:

bash
cat > README.md <<'EOF'
# Buku Catatan

Kumpulan catatan belajar saya.

## Daftar Isi

- [Panduan Struktur Catatan](docs/panduan.md)
EOF
bash
cat README.md

Output yang Dihasilkan:

text
# Buku Catatan

Kumpulan catatan belajar saya.

## Daftar Isi

- [Panduan Struktur Catatan](docs/panduan.md)

Kali ini berkas sudah dilacak, jadi statusnya berubah menjadi suntingan:

bash
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

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

Sebelum menyimpan, baca dulu apa yang sebenarnya berubah — kebiasaan dari chapter Memeriksa Perubahan Sebelum Commit :

bash
git diff

Output yang Dihasilkan:

text
diff --git a/README.md b/README.md
index 8ca9a76..eb729b4 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,7 @@
 # Buku Catatan
 
 Kumpulan catatan belajar saya.
+
+## Daftar Isi
+
+- [Panduan Struktur Catatan](docs/panduan.md)

Keluaran git diff dibaca dari atas:

  1. Baris diff --git — berkas yang dibandingkan: README.md dengan dirinya sendiri.
  2. Baris index — posisi versi lama dan baru di database Git.
  3. Baris @@ -1,3 +1,7 @@ — hunk: versi lama menampilkan tiga baris mulai baris 1, versi baru tujuh baris mulai baris 1.
  4. Baris berawalan + — empat baris baru yang ditambahkan; baris tanpa tanda adalah konteks yang tidak berubah.

Simpan perubahan yang sudah diperiksa:

bash
git add README.md
git commit -m "docs: lengkapi README dengan daftar isi"

Output yang Dihasilkan (perintah terakhir):

text
[main ecb3bec] docs: lengkapi README dengan daftar isi
 1 file changed, 4 insertions(+)

Membaca Kembali Seluruh Riwayat #

Empat commit kini tertanam. git log dengan --stat menampilkan setiap commit beserta ringkasan perubahannya:

bash
git log --oneline --stat

Output yang Dihasilkan:

text
ecb3bec docs: lengkapi README dengan daftar isi
 README.md | 4 ++++
 1 file changed, 4 insertions(+)
fd7e5b9 docs: tambahkan panduan struktur catatan
 docs/panduan.md | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)
d047b69 chore: tambahkan .gitignore
 .gitignore | 3 +++
 1 file changed, 3 insertions(+)
6c59970 docs: rintis buku catatan
 README.md | 3 +++
 1 file changed, 3 insertions(+)

Riwayat terbaca seperti laporan pekerjaan: commit terbaru di atas, dan setiap pesan menjelaskan satu keputusan. Tanda + di kolom kanan memperlihatkan ukuran tiap perubahan — penggunaan --stat dan opsi log lainnya dibahas pada chapter Opsi git log .

Latihan Kecil: Catatan Pertama #

Giliran isi repository diisi catatan sungguhan. Buat satu catatan pertama mengikuti panduan yang baru saja ditulis:

bash
mkdir catatan
cat > catatan/git-dasar.md <<'EOF'
# Git Dasar

Catatan pribadi: tiga area kerja Git — working directory, staging area, dan repository.
EOF
git status
git add catatan/git-dasar.md
git commit -m "docs: tambahkan catatan git dasar"

git status akan menampilkan catatan/ sebagai folder yang belum dilacak — sama seperti docs/ sebelumnya — dan commit kelima muncul di git log --oneline setelahnya. Lalu uji .gitignore yang dibuat di awal bagian:

bash
touch draft-ide-baru.md
git status

Perintah touch membuat satu berkas kosong bernama draft-ide-baru.md. Karena namanya berawalan draft-, berkas itu tidak muncul di git status — .gitignore bekerja diam-diam, dan draf boleh tertinggal di folder kerja tanpa pernah tersentuh riwayat.

Repository kini punya ritme: berkas baru, status, periksa, commit. Bagian 3 menguji ritme yang sama di tempat terisolasi — branch fitur fitur/tambah-glosarium — sebelum hasilnya digabungkan kembali ke main.