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.

Model tiga area
  • 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
Penting: mengabaikan .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

SituasiPerintah awalDampak
Perubahan file belum stagedgit restore fileMengganti file working tree; perubahan lokal hilang
File salah masuk staginggit restore --staged fileMengeluarkan dari staging, edit tetap ada
Commit sudah dibagikangit revert SHAMembuat commit baru yang membalik perubahan
Commit lokal terakhir perlu diperbaikigit commit --amendMengganti 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

  1. git status sebelum mulai.
  2. Ambil perubahan remote bila berkolaborasi.
  3. Buat branch untuk satu tujuan.
  4. Edit dan uji dalam langkah kecil.
  5. Baca git diff, lalu stage bagian yang benar.
  6. Baca git diff --staged sebelum commit.
  7. Push branch dan review diff di GitHub.
  8. Pastikan tidak ada kredensial atau file build yang tidak diperlukan.

Referensi resmi

Artikel terkait