Panduan Dasar Git dan GitHub
Memahami alur Git melalui satu perubahan nyata sehingga setiap perintah mempunyai tujuan, bukan sekadar urutan yang dihafal.
Git menyimpan riwayat perubahan proyek di komputer. GitHub adalah layanan untuk menyimpan repository Git secara remote dan berkolaborasi. Keduanya sering digunakan bersama, tetapi memahami perbedaannya membantu ketika internet mati, remote bermasalah, atau kita perlu membatalkan perubahan dengan aman.
- Working tree: file yang sedang diedit.
- Staging area/index: isi yang disiapkan untuk commit berikutnya.
- Repository: rangkaian commit yang sudah disimpan.
- Remote seperti GitHub menyimpan salinan dan referensi branch di server.
Siapkan identitas commit
Nama dan email menjadi metadata commit. Gunakan identitas yang memang ingin ditampilkan pada riwayat repository. Pengaturan global berlaku untuk seluruh proyek pengguna; pengaturan tanpa --global
git --version
git config --global user.name "Nama atau nama pena"
git config --global user.email "email@example.com"
git config --global init.defaultBranch main
git config --list --show-origin
Perintah terakhir memperlihatkan nilai sekaligus file konfigurasi asalnya. Ini berguna ketika pengaturan lokal menimpa pengaturan global.
Buat repository dan pahami status
cd proyek-website
git init
git status
git status adalah titik awal yang aman. Ia menunjukkan branch aktif, file baru, perubahan yang belum staged, dan isi yang siap di-commit. Jalankan kembali setelah setiap operasi sampai perubahan yang terlihat sesuai harapan.
Sebelum git add, buat .gitignore untuk file yang tidak boleh masuk repository.
# .gitignore
.env
.env.*
node_modules/
dist/
.DS_Store
Thumbs.db
*.log
.env tidak menghapus rahasia yang sudah pernah di-commit. Jika token terlanjur masuk riwayat, cabut atau rotasi token tersebut terlebih dahulu.Stage hanya perubahan yang dimaksud
git add menyalin keadaan file saat itu ke staging area. Perubahan setelahnya belum otomatis ikut. Karena itu, periksa diff sebelum dan sesudah staging.
git diff # perubahan working tree
git add index.html
git diff --staged # isi commit berikutnya
git status
Untuk file yang berisi dua pekerjaan berbeda, gunakan git add -p. Git menampilkan perubahan per hunk sehingga kita bisa memasukkan hanya bagian yang relevan.
Tulis commit sebagai satu keputusan
git commit -m "fix: rapikan menu kategori pada layar kecil"
git log --oneline --decorate -5
Pesan commit sebaiknya menjelaskan hasil atau alasan, bukan hanya “update”. Commit kecil mempermudah review, pencarian penyebab bug, dan revert. Jangan memecah perubahan begitu kecil hingga satu fitur tidak dapat dipahami; satu commit idealnya tetap menghasilkan keadaan proyek yang logis.
Gunakan branch untuk pekerjaan terpisah
git switch -c feature/search-modal
# edit dan uji file
git add -p
git commit -m "feat: tambahkan dialog pencarian artikel"
git switch main
git merge feature/search-modal
Nama branch menjelaskan tujuan. Pada kolaborasi, branch biasanya dikirim ke remote dan dibuka sebagai pull request agar diff, diskusi, dan pemeriksaan otomatis dapat dilihat sebelum merge.
Hubungkan repository ke GitHub
git remote add origin https://github.com/username/nama-repo.git
git remote -v
git push -u origin main
Opsi -u mengatur upstream sehingga push berikutnya cukup menggunakan git push. Jangan menaruh token akses di URL yang disimpan atau di file proyek. Gunakan credential manager atau autentikasi SSH sesuai dokumentasi GitHub.
Ambil perubahan remote dengan sadar
git fetch mengambil informasi remote tanpa langsung mengubah working tree. Ini berguna ketika ingin memeriksa perubahan lebih dulu. git pull umumnya melakukan fetch kemudian mengintegrasikan branch remote sesuai konfigurasi.
git fetch origin
git log --oneline --graph --decorate --all -12
git diff main..origin/main
git pull --ff-only
--ff-only menolak pull jika dibutuhkan merge commit, sehingga riwayat tidak berubah tanpa disadari. Jika ditolak, baca grafik commit dan putuskan apakah perlu merge atau rebase sesuai aturan tim.
Pilih cara membatalkan yang sesuai
| Situasi | Perintah awal | Dampak |
|---|---|---|
| Perubahan file belum staged | git restore file | Mengganti file working tree; perubahan lokal hilang |
| File salah masuk staging | git restore --staged file | Mengeluarkan dari staging, edit tetap ada |
| Commit sudah dibagikan | git revert SHA | Membuat commit baru yang membalik perubahan |
| Commit lokal terakhir perlu diperbaiki | git commit --amend | Mengganti commit terakhir; jangan sembarang pada riwayat publik |
git reset dapat memindahkan ujung branch dan, bergantung opsinya, mengubah staging atau working tree. Jangan menyalin perintah reset dari internet sebelum memahami target commit dan memastikan pekerjaan penting mempunyai salinan.
Selesaikan conflict dengan membaca tiga bagian
<<<<<<< HEAD
judul versi lokal
=======
judul versi remote
>>>>>>> origin/main
Conflict bukan error Git; Git meminta manusia menentukan hasil akhir. Edit file menjadi isi yang benar, hapus marker, jalankan pengujian, lalu stage dan selesaikan merge atau rebase. Jangan otomatis memilih “ours” atau “theirs” pada seluruh file tanpa membaca konteks.
Alur kerja harian yang sederhana
git statussebelum mulai.- Ambil perubahan remote bila berkolaborasi.
- Buat branch untuk satu tujuan.
- Edit dan uji dalam langkah kecil.
- Baca
git diff, lalu stage bagian yang benar. - Baca
git diff --stagedsebelum commit. - Push branch dan review diff di GitHub.
- Pastikan tidak ada kredensial atau file build yang tidak diperlukan.