Git adalah version control system (VCS): program yang mencatat riwayat versi isi folder proyekmu. Tiap kali kamu menyimpan versi, Git memotret semua file di folder itu dan memberinya catatan. Mirip save game: kamu bisa terus main, dan kalau ada yang salah, tinggal buka save yang lama.
🧪 Tebakan cepat: laptopmu hilang, tapi kemarin temanmu sempat menyalin repository proyekmu. Riwayat versinya ikut hilang, atau masih ada? Tebak dulu, jawabannya ada di bagian "Git itu distributed".
Tanpa Git vs pakai Git
Tanpa alat pengatur versi, folder proyek biasanya jadi begini:
project/
├── README.md
├── README-final.md
├── README-final-fix.md
└── README-final-fix-BENERAN.md
Mana yang terbaru? Apa bedanya final dan final-fix? Gak ada yang tahu, termasuk kamu sendiri seminggu lagi.
Pakai Git, foldernya tetap berisi satu README.md. Versi-versi lamanya disimpan Git di riwayat, masing-masing dengan catatan:
$ git log --oneline
a3b892a (HEAD -> main) tambah analogi save game
66629cd tambah catatan hari pertama
4641629 tulis judul
Tiap baris adalah satu versi: kode pendek di depan (hash, nama unik versi itu) lalu catatannya. Yang paling atas yang terbaru. Versi mana pun bisa dibuka lagi kapan saja, misalnya isi README.md di versi pertama:
$ git show 4641629:README.md
# Project Pertamaku
Repository dan commit
Dua kata ini bakal kamu dengar terus:
- Repository (repo): folder proyek yang dijaga Git. Bedanya dengan folder biasa cuma satu: di dalamnya ada folder tersembunyi
.git, tempat Git menyimpan semua riwayat. Folder biasa jadi repository dengan perintahgit init. - Commit: satu versi yang disimpan. Isinya potret semua file pada saat itu, plus catatan (pesan commit), nama pembuatnya, dan waktunya. 1 commit = 1 snapshot. Riwayat di atas berisi 3 commit.
Alur sehari-harinya tiga langkah: ubah file, pilih file yang mau disimpan dengan git add, lalu simpan versinya dengan git commit. Detailnya ada di pelajaran Git Add & Commit. Nanti kamu juga kenalan dengan branch, jalur kerja terpisah untuk mencoba ide tanpa mengganggu versi utama.
Git itu distributed
Ada dua jenis VCS:
| Centralized (misalnya SVN) | Distributed (Git) | |
|---|---|---|
| Riwayat lengkap disimpan di | satu server pusat | setiap salinan repository |
| Commit tanpa internet | gak bisa | bisa |
| Server pusat rusak | riwayat ikut hilang | salinan lain masih lengkap |
Git itu distributed: tiap orang yang menyalin repository (namanya clone) dapat riwayat yang lengkap, bukan cuma file terbarunya. Jadi kalau laptopmu hilang, riwayat sampai kemarin masih utuh di salinan temanmu. Itu jawaban tebakannya.
Git dibuat oleh Linus Torvalds, pembuat Linux, tahun 2005. Dia butuh alat untuk kernel Linux yang dikerjakan ribuan orang di seluruh dunia, dan alatnya harus cepat dan gak bergantung pada satu server. Sekarang Git dipakai hampir di semua tim software.
Cek Git di komputermu
Git adalah program yang di-install di komputer. Cek versinya di terminal:
$ git --version
git version 2.50.1
git --version menampilkan versi Git yang terinstall di komputermu, bukan versi terbaru di internet. Angkanya boleh beda. Kalau keluar command not found, berarti Git belum terinstall.
Di pelajaran ini kamu gak perlu install apa-apa: latihannya pakai Git Simulator yang jalan di browser. Langkah pertamanya selalu sama, mengubah folder jadi repository:
$ git init
Initialized empty Git repository in /project/.git/
$ git status
On branch main
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
README.md
nothing added to commit but untracked files present (use "git add" to track)
git initmembuat folder.gitdi folder proyek. Sejak itu foldernya adalah repository.git statusmenampilkan keadaan repository: kamu di branchmain, belum ada commit, danREADME.mdbelum dicatat Git (untracked). Arti tiap bagiannya dibahas di pelajaran berikutnya.
⚠️ Jebakan yang sering ketemu
- Menganggap Git sama dengan GitHub. Git adalah program di komputermu dan jalan tanpa internet. GitHub adalah website tempat menaruh repository supaya bisa dipakai bareng tim. Kamu bisa pakai Git tanpa GitHub.
- Menjalankan perintah Git di luar repository. Hasilnya
fatal: not a git repository. Artinya kamu belumgit init, atau terminalmu ada di folder yang salah. - Menghapus folder
.git. Seluruh riwayat ikut hilang, yang tersisa cuma file terbaru. Folder itu disembunyikan supaya gak kehapus gak sengaja. - Mengira Git menyimpan sendiri. Git gak punya autosave. Versi baru tercatat cuma kalau kamu commit.
TL;DR: Git adalah version control system: dia mencatat riwayat versi folder proyekmu. Repository adalah folder yang dijaga Git (ada .git di dalamnya, dibuat dengan git init), dan commit adalah satu versi tersimpan: snapshot semua file plus pesan. Git itu distributed, jadi tiap salinan punya riwayat lengkap dan bisa commit tanpa internet. Git dibuat Linus Torvalds tahun 2005. git --version menampilkan versi Git yang terinstall di komputermu.