Pernahkah kamu punya file bernama proyek_final.zip, proyek_final_revisi.zip, proyek_final_revisi_BENAR.zip? Git menyelesaikan kekacauan itu: ia merekam setiap perubahan kode sehingga kamu bisa melihat riwayat, kembali ke versi lama, dan bekerja bersama orang lain tanpa saling menimpa. GitHub adalah layanan yang menyimpan repositori Git di cloud dan menambahkan fitur kolaborasi.
Git vs GitHub
| Git | GitHub | |
|---|---|---|
| Apa itu | Sistem version control yang berjalan di komputermu | Layanan hosting repositori Git di internet |
| Butuh internet? | Tidak | Ya |
| Fungsi | Merekam riwayat, branching | Backup, kolaborasi, pull request, issue, CI |
| Alternatif | - | GitLab, Bitbucket |
Konsep inti
- Repository (repo): folder proyek beserta seluruh riwayatnya.
- Commit: "foto" kondisi proyek pada satu titik, disertai pesan penjelasan.
- Branch: jalur pengembangan terpisah. Cabang utama biasanya
main. - Remote: salinan repo di server (biasanya bernama
origin). - Working directory → staging area → repository: tiga tempat perubahan berpindah.
Alur kerja dasar: ubah file → git add (siapkan ke staging) → git commit (rekam).
Konfigurasi awal (sekali saja)
git config --global user.name "Nama Kamu"
git config --global user.email "email@contoh.com"
git config --global init.defaultBranch main
Perintah harian
git init # mulai repo baru di folder ini
git status # lihat file yang berubah
git add index.html # masukkan satu file ke staging
git add . # masukkan semua perubahan
git commit -m "Tambah halaman beranda"
git log --oneline # lihat riwayat ringkas
git diff # lihat perubahan yang belum di-stage
Selalu jalankan git status sebelum commit untuk memastikan hanya perubahan yang kamu maksud yang ikut.
.gitignore: apa yang tidak boleh masuk repo
Buat file .gitignore untuk mengecualikan:
node_modules/
vendor/
.env
*.log
.DS_Store
storage/*.key
Jangan pernah commit file .env, kunci API, password, atau kunci privat. Jika terlanjur ter-push, anggap rahasia itu bocor dan ganti segera; menghapus commit saja tidak cukup karena riwayatnya masih tersimpan.
Menghubungkan ke GitHub
- Buat repositori kosong di GitHub.
- Hubungkan dan unggah:
git remote add origin https://github.com/username/proyek.git
git branch -M main
git push -u origin main
Untuk mengunduh proyek orang lain: git clone https://github.com/username/proyek.git.
Autentikasi memakai SSH key atau Personal Access Token (GitHub tidak lagi menerima password akun untuk operasi Git).
Sinkronisasi harian:
git pull # ambil dan gabungkan perubahan dari remote
git push # kirim commit lokalmu
Branching: bekerja tanpa merusak versi utama
Buat cabang untuk setiap fitur atau perbaikan:
git switch -c fitur/login # buat dan pindah ke cabang baru
# ... ubah kode, commit ...
git switch main # kembali ke main
git merge fitur/login # gabungkan fitur ke main
git branch -d fitur/login # hapus cabang yang sudah selesai
Manfaatnya: main selalu stabil, dan beberapa orang bisa mengerjakan fitur berbeda secara paralel.
Menyelesaikan konflik merge
Konflik terjadi saat dua cabang mengubah baris yang sama. Git menandai file seperti ini:
<<<<<<< HEAD
<h1>Selamat Datang</h1>
=======
<h1>Halo, Pengunjung</h1>
>>>>>>> fitur/judul
Langkah penyelesaian:
- Buka file, pilih (atau gabungkan) isi yang benar, lalu hapus tanda
<<<<<<<,=======,>>>>>>>. git add namafilegit commituntuk menyelesaikan merge.
Editor seperti VS Code menyediakan tombol "Accept Current/Incoming Change". Konflik bukan tanda kamu salah; itu hal biasa dalam kerja tim. Cara menguranginya: commit kecil dan sering, serta git pull rutin sebelum mulai bekerja.
Membatalkan kesalahan
| Situasi | Perintah |
|---|---|
| Batalkan perubahan di file (belum di-commit) | git restore namafile |
| Keluarkan file dari staging | git restore --staged namafile |
| Ubah pesan commit terakhir (belum di-push) | git commit --amend |
| Batalkan commit terakhir tetapi simpan perubahannya | git reset --soft HEAD~1 |
| Buat commit baru yang membatalkan commit tertentu (aman untuk riwayat publik) | git revert <id-commit> |
| Simpan sementara pekerjaan yang belum selesai | git stash lalu git stash pop |
Hati-hati dengangit reset --harddangit push --force: keduanya bisa menghapus pekerjaan secara permanen. Jangan memakai--forcepada cabang bersama.
Jika terasa "hilang", git reflog sering bisa menyelamatkan commit yang tampak terhapus.
Alur kerja tim: GitHub Flow
mainselalu siap rilis.- Buat cabang dari
mainuntuk setiap pekerjaan, beri nama deskriptif (fitur/keranjang,perbaikan/validasi-email). - Commit secara berkala, push ke GitHub.
- Buka Pull Request (PR): tulis ringkasan perubahan, kenapa, dan cara mengujinya.
- Rekan tim melakukan code review dan memberi komentar.
- Setelah disetujui dan pengujian otomatis lulus, merge ke
main. - Hapus cabang.
Aktifkan branch protection di GitHub agar main tidak bisa di-push langsung dan wajib melalui PR.
Menulis pesan commit yang baik
Pesan commit adalah dokumentasi untuk masa depan.
- Baris pertama singkat (≤ 50 karakter), diawali kata kerja: "Tambah validasi email pada form daftar".
- Jelaskan mengapa, bukan hanya apa, di badan pesan bila perlu.
- Satu commit = satu perubahan logis.
- Hindari pesan seperti "update", "fix", "asdf".
Banyak tim memakai format Conventional Commits: feat: tambah filter kategori, fix: perbaiki hitung total keranjang.
Praktik baik
- Commit sering, dalam potongan kecil.
git pullsebelum mulai bekerja dan sebelum push.- Jangan mengerjakan fitur langsung di
main. - Tulis README yang menjelaskan proyek dan cara menjalankannya.
- Gunakan Issues untuk mencatat tugas dan bug.
- Manfaatkan GitHub Actions untuk menjalankan test otomatis pada setiap PR.
Mulai dari mana?
Latihan 15 menit: buat folder, git init, buat file, commit, buat cabang, ubah file, merge, lalu push ke GitHub. Ulangi sampai alurnya terasa otomatis. Setelah itu, ikuti sebuah proyek open-source kecil dan buat PR pertamamu.
Kesimpulan
Git adalah keterampilan wajib bagi setiap developer: ia melindungi pekerjaanmu, membuat kerja tim terorganisir, dan menjadi bukti proses belajarmu di GitHub. Kuasai alur add → commit → branch → merge → push → pull request, dan kamu sudah siap bekerja dalam tim profesional.
Komentar (0)
Masuk / Daftar