
Tombol Nuklir di Dunia Programming
Git sangat ketat dalam menjaga sejarah (History) kodemu. Jika Git mendeteksi kode lokalmu "lebih usang" atau berbeda alur ceritanya (karena kamu salah melakukan Git Rebase atau Reset) dibandingkan kode yang ada di server (GitHub Remote), Git akan Mencegahmu melakukan Push (Upload) dan memunculkan *error* yang menyuruhmu melakukan git pull terlebih dahulu.
Sayangnya, di forum-forum diskusi murahan, solusi yang paling sering diajarkan untuk mengakali error merah ini adalah: "Tambahkan flag -f bang! Ketik aja: git push origin main -f".
Menerapkan perintah --force (atau -f) pada branch utama di proyek tim adalah dosa besar yang tidak termaafkan (bisa membuatmu dipecat!).
Apa yang Sebenarnya Terjadi Saat Force Push?
Perintah git push --force ibarat kamu berkata ke mesin server GitHub: "Saya tidak peduli dengan sejarah kode yang ada di otakmu. HAPUS semua catatan milikmu, dan timpa/ganti 100% dengan sejarah kode yang ada di laptopku saat ini juga!"
Skenario Bencana:
- Temanmu (Siti) baru saja bekerja lembur dan mem-*push* fitur Laporan Keuangan ke branch
main. - Kamu belum melakukan
git pullke laptopmu, jadi kamu belum memiliki fitur milik Siti di *Local*-mu. - Kamu melakukan Commit kecil (Ubah Warna Tombol), lalu kamu mendapat error saat mem-push-nya.
- Karena tidak sabaran, kamu mengetik
git push --force. - Boom! Server GitHub akan mengabaikan kerja keras lembur Siti, menghapusnya dari peradaban (karena fitur Siti tidak ada di sejarah laptopmu), dan menimpanya dengan fitur ganti warna tombol milikmu!
Cara Mencegah Bencana Ini
Sebagai langkah pengamanan pertama, kamu atau manajermu WAJIB mengaktifkan fitur "Branch Protection Rules" di halaman pengaturan (Settings) repository GitHub, dan larang siapa pun untuk melakukan *Force Push* ke branch main atau develop.
Alternatif Lebih Aman: --force-with-lease
Bagaimana jika kamu memang benar-benar harus menimpa kode di branch pribadimu (karena kamu habis melakukan squash atau rebase untuk membersihkan commit)?
Gunakan perintah yang lebih canggih dan bijaksana: git push --force-with-lease.
Perintah (dengan syarat) ini juga akan memaksa penimpaan kode, TAPI ia akan mengecek terlebih dahulu! Jika ia mendeteksi bahwa sejak *pull* terakhirmu ternyata ada *commit* milik orang lain yang masuk ke server tanpa sepengetahuanmu (seperti kode lemburan si Siti), ia akan membatalkan *force push* tersebut demi menyelamatkan kode Siti.
Mau langsung pakai template?
Jelajahi template gratis dan premium di TampilKit untuk mempercepat proses development project kamu.
Browse Templates