Git — apa itu, prinsip kerja dan perintah

Penulis: IT Sectr Diterbitkan: 2026-05-09 Waktu membaca: 8 mnt

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 — VCS terdistribusi dengan riwayat perubahan lengkap di setiap komputer pengembang.
  • Commit membuat snapshot status file dengan hash SHA-1 unik untuk melacak perubahan.
  • Cabang di Git mengisolasi pengembangan fitur dan memungkinkan kerja paralel tanpa konflik.
  • Merge dan Rebase — dua cara integrasi perubahan dengan pendekatan berbeda terhadap riwayat commit.
  • GitHub, GitLab dan Bitbucket — platform web yang menambahkan UI dan CI/CD di atas repositori Git.

Apa itu Git?

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.

Cara kerja Git: repositori dan commit

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.

bash
# 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

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:

PerintahTindakanContoh
git cloneMenyalin repositori jarak jauhgit clone https://example.com/repo
git addMenambahkan file ke staginggit add src/main.kt
git commitMencatat perubahan dalam riwayatgit commit -m "Fix login bug"
git pushMengirim commit ke servergit push origin main
git pullMengambil perubahan dari servergit 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.

Percabangan di Git: main, feature dan release

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.

bash
# 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.

Penggabungan: Merge dan Rebase

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.

Penyelesaian konflik

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.

Bekerja dengan repositori jarak jauh

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.

bash
# 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 untuk kerja paralel

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 untuk dependensi

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

Apa perbedaan Git dengan SVN?

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.

Bagaimana cara membatalkan commit terakhir?

Gunakan git revert HEAD untuk pembatalan aman (commit baru dibuat). Jika commit belum dikirim ke server, Anda dapat menggunakan git reset --soft HEAD~1.

Apa itu .gitignore dan untuk apa?

.gitignore — file yang berisi pola file dan direktori yang harus diabaikan Git. Digunakan untuk mengecualikan file sementara, hasil build dan konfigurasi IDE dari repositori.

Apa perbedaan antara git pull dan git fetch?

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.

Bagaimana cara memperbaiki pesan commit terakhir?

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

  • Git — sistem kontrol versi terdistribusi dari Linus Torvalds yang menjadi standar dalam pengembangan perangkat lunak.
  • Commit mencatat snapshot status file dengan hash SHA-1 dan referensi ke commit sebelumnya.
  • Cabang — penunjuk ringan ke commit, memungkinkan pengembangan fitur paralel.
  • Merge membuat merge-commit dengan dua induk, Rebase — menulis ulang riwayat untuk graf linier.
  • Repositori jarak jauh (origin) menyinkronkan kode antar pengembang melalui push dan pull.
  • GitHub, GitLab, Bitbucket menambahkan antarmuka web, tinjauan kode dan CI/CD di atas Git.
  • Mulailah dengan meng-clone repositori dan menguasai tiga perintah: commit, push, pull — mereka mencakup siklus kerja dasar.

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.

Diskusikan proyek

Baca juga