Git — adalah sistem kontrol versi terdistribusi dengan sumber terbuka, dibuat oleh Linus Torvalds pada tahun 2005 untuk pengembangan kernel Linux. Berbeda dengan sistem terpusat seperti SVN, Git menyimpan salinan lengkap repositori di setiap perangkat pengembang, memungkinkan bekerja tanpa koneksi permanen ke server. Menurut data Git SCM, 2024, Git digunakan di lebih dari 90% semua proyek pengembangan perangkat lunak komersial.
Poin utama
Git — adalah sistem kontrol versi terdistribusi (VCS) yang melacak perubahan pada file dan memungkinkan beberapa pengembang bekerja pada proyek yang sama secara bersamaan. Berbeda dengan sistem terpusat, di Git setiap pengembang memiliki salinan lengkap repositori, termasuk seluruh riwayat perubahan, yang membuat sistem tahan terhadap kehilangan data dan tidak memerlukan koneksi permanen ke server pusat.
Sejarah Git dimulai pada tahun 2005, ketika Linus Torvalds membuat VCS baru setelah perusahaan BitKeeper mencabut lisensi gratis untuk sistemnya bagi pengembang kernel Linux. Tujuannya adalah: kecepatan, kesederhanaan arsitektur, dukungan untuk pengembangan non-linear melalui percabangan dan keterdistribusian penuh. Dalam 3 bulan Torvalds menulis inti Git, dan setahun kemudian proyek beralih ke pengelolaan mandiri di bawah pimpinan Junio Hamano.
Menurut survei Stack Overflow (2024), 93,9% pengembang profesional menggunakan Git, menjadikannya sistem kontrol versi yang dominan di industri. Pesaing terdekat — Subversion (SVN) — hanya digunakan dalam 5,2% proyek, terutama di lingkungan perusahaan besar dengan proses terpusat.
Repositori Git — adalah direktori di mana Git melacak perubahan semua file. Di dalam direktori terdapat folder tersembunyi .git, tempat semua objek sistem disimpan: commit, pohon, blob, dan referensi. Ketika pengembang membuat commit, Git tidak menyalin file secara keseluruhan — ia membuat snapshot status dan menyimpan referensi ke sana.
Setiap commit berisi: hash SHA-1 unik (40 karakter), referensi ke commit sebelumnya (parent), penulis, tanggal, pesan commit dan referensi ke pohon (tree) yang menggambarkan status file pada saat commit. Rantai commit membentuk graf asiklik terarah, di mana setiap commit menunjuk ke satu atau beberapa induk.
# Inisialisasi repositori
git init my-project
cd my-project
# Membuat commit
echo "Hello, Git" > README.md
git add README.md
git commit -m "Initial commit"
# Melihat riwayat
git log --oneline --graph --all
Git menggunakan tiga area utama: working directory (file di disk), staging area (indeks tempat file yang disiapkan masuk) dan repository (riwayat commit). Perintah git add memindahkan perubahan dari direktori kerja ke staging, dan git commit mencatat konten staging di repositori. Pemisahan ini memungkinkan pengembang untuk mengumpulkan commit yang bermakna dari sekumpulan perubahan, tanpa mencatat setiap perbaikan secara terpisah.
Perintah dasar Git mencakup 90% operasi harian pengembang. Perintah git clone membuat salinan lokal repositori jarak jauh, git pull mengambil perubahan dari server dan menggabungkannya dengan cabang saat ini, dan git push mengirim commit lokal ke server. Ketiga perintah ini membentuk siklus kerja utama dengan Git.
Untuk melihat status digunakan git status — ini menunjukkan file mana yang diubah, mana yang ditambahkan ke staging, dan mana yang tidak dilacak. git diff menampilkan perubahan konkret pada file sebelum ditambahkan ke staging. Di bawah ini adalah tabel dengan perintah yang paling sering digunakan:
| Perintah | Tindakan | Contoh |
|---|---|---|
| git clone | Menyalin repositori jarak jauh | git clone https://example.com/repo |
| git add | Menambahkan file ke staging | git add src/main.kt |
| git commit | Mencatat perubahan dalam riwayat | git commit -m "Fix login bug" |
| git push | Mengirim commit ke server | git push origin main |
| git pull | Mengambil perubahan dari server | git pull origin feature |
Untuk membatalkan perubahan Git menawarkan beberapa opsi. git reset memindahkan penunjuk cabang ke commit yang ditentukan dan dapat mereset staging atau direktori kerja. git revert membuat commit baru yang membatalkan perubahan commit yang ditentukan — ini adalah cara pembatalan yang aman untuk cabang bersama, karena riwayat tidak ditulis ulang.
Cabang di Git — adalah penunjuk ringan yang dapat dipindahkan ke commit tertentu. Membuat cabang baru tidak menyalin file, hanya membuat penunjuk baru, yang membuat percabangan praktis instan. Cabang main (sebelumnya master) — cabang utama proyek yang berisi kode stabil siap rilis.
Praktik standar adalah menggunakan Git Flow atau GitHub Flow. Dalam Git Flow digunakan cabang: main (kode rilis), develop (cabang integrasi), feature/* (fitur baru), release/* (persiapan rilis) dan hotfix/* (perbaikan mendesak). GitHub Flow lebih sederhana: hanya main dan cabang feature, dan semua perubahan dikirimkan melalui Pull Request.
# Membuat dan beralih cabang
git branch feature-auth
git checkout feature-auth
# atau dengan satu perintah:
git checkout -b feature-auth
# Daftar cabang
git branch --list
git branch -a # semua cabang, termasuk yang dihapus
# Menghapus cabang
git branch -d feature-auth
Properti penting dari percabangan Git — kemampuan cherry-pick: memindahkan commit individu dari satu cabang ke cabang lain dengan perintah git cherry-pick <hash>. Ini berguna ketika Anda perlu memindahkan perbaikan bug dari cabang feature ke release tanpa menggabungkan seluruh cabang. Git juga mendukung rebase dan rebase interaktif (git rebase -i) untuk menggabungkan, mengurutkan ulang, dan mengedit commit.
Merge (penggabungan) membuat merge-commit khusus yang memiliki dua induk. Commit ini mencatat fakta penggabungan dua cabang dan mempertahankan riwayat lengkap — terlihat di mana dan kapan penggabungan terjadi. Merge mempertahankan riwayat dalam bentuk aslinya, yang menyederhanakan audit, tetapi membuat graf commit lebih kompleks.
Rebase (pendasaran ulang) alih-alih membuat merge-commit, memindahkan commit cabang saat ini ke puncak cabang target. Riwayat menjadi linier — tercipta kesan bahwa pengembangan berlangsung secara berurutan. Namun, rebase menulis ulang riwayat, mengubah hash SHA-1 commit, yang membuatnya berbahaya untuk cabang bersama yang dapat diakses oleh pengembang lain.
Rekomendasi pemilihan: gunakan merge untuk cabang publik di mana riwayat dilihat oleh pengembang lain (feature → develop), dan rebase untuk pekerjaan lokal ketika Anda perlu menerapkan perubahan terbaru dari main ke cabang feature Anda sebelum membuat Pull Request. Aturannya sederhana: jika commit sudah dikirim ke server — jangan rebase.
Konflik penggabungan terjadi ketika Git tidak dapat menggabungkan perubahan dalam satu file secara otomatis. Git menandai bagian yang bertentangan dalam file dengan penanda khusus: <<<<<<< (perubahan kita), ======= (pemisah), >>>>>>> (perubahan mereka). Pengembang mengedit file secara manual, memilih opsi yang diinginkan atau menggabungkan keduanya, dan menyelesaikan penggabungan dengan commit.
Repositori jarak jauh (remote) — salinan repositori Git yang berada di server. GitHub, GitLab dan Bitbucket adalah platform paling populer untuk hosting repositori jarak jauh. Mereka menyediakan antarmuka web untuk melihat kode, manajemen akses, tinjauan kode dan integrasi dengan sistem CI/CD.
Di Git dapat dikonfigurasi beberapa repositori jarak jauh untuk satu proyek. Secara default, remote utama disebut origin. Perintah git remote add menambahkan remote baru, git fetch mengambil perubahan tanpa menggabungkan, dan git pull adalah singkatan dari git fetch + git merge. Untuk bekerja dengan kode melalui Pull Request, pengembang membuat fork repositori, meng-clone-nya, bekerja di cabang feature dan mengirim permintaan penggabungan ke repositori asli.
# Menambahkan repositori jarak jauh
git remote add origin https://github.com/user/repo.git
# Melihat repositori jarak jauh
git remote -v
# Mengirim cabang ke server
git push -u origin feature-auth
# Mengambil perubahan dari cabang jarak jauh
git pull origin main
Repositori jarak jauh mendukung penandaan untuk menandai versi rilis. Tag bisa ringan (hanya penunjuk ke commit) dan anotasi (berisi metadata: penulis, tanggal, pesan). Tag anotasi direkomendasikan untuk versi rilis, karena mereka menyampaikan informasi lengkap tentang versi dan dapat ditandatangani dengan kunci GPG untuk verifikasi kepengarangan.
Git Worktree memungkinkan bekerja secara simultan dengan beberapa cabang di direktori berbeda tanpa beralih di antara mereka. Perintah git worktree add ../feature-auth feature-auth membuat direktori kerja baru feature-auth, di mana Anda dapat menulis kode tanpa mengubah cabang di direktori utama. Worktree berguna untuk perbaikan cepat di cabang release ketika direktori utama sibuk dengan pengembangan jangka panjang.
Git Submodules — mekanisme untuk menyertakan satu repositori Git ke dalam repositori lain. Submodule menyimpan referensi ke commit tetap dari repositori eksternal, yang menjamin reproduksibilitas build. Perintah git submodule add https://github.com/example/lib.git menambahkan pustaka eksternal sebagai submodule. Saat meng-clone proyek dengan submodule, perlu menjalankan git submodule update --init --recursive untuk memuat semua dependensi.
Pertanyaan yang sering diajukan
Git — VCS terdistribusi dengan riwayat lokal dan kemampuan kerja offline. SVN — sistem terpusat yang memerlukan koneksi permanen ke server untuk semua operasi selain melihat file.
Gunakan git revert HEAD untuk pembatalan aman (commit baru dibuat). Jika commit belum dikirim ke server, Anda dapat menggunakan git reset --soft HEAD~1.
.gitignore — file yang berisi pola file dan direktori yang harus diabaikan Git. Digunakan untuk mengecualikan file sementara, hasil build dan konfigurasi IDE dari repositori.
git fetch mengunduh perubahan dari server tetapi tidak menggabungkannya dengan cabang saat ini. git pull melakukan fetch dan langsung menjalankan merge. Untuk kontrol, gunakan fetch + lihat diff, lalu merge manual.
Gunakan git commit --amend — perintah ini membuka editor untuk mengubah pesan commit. Jika commit sudah di server, diperlukan git push --force, yang berbahaya untuk cabang bersama.
Kesimpulan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.
Baca juga