Lewati ke konten utama

Git Push Force: Cara Kerjanya dan Cara Menggunakannya dengan Aman

Pelajari bagaimana git push force menulis ulang riwayat branch, cara menggunakannya dengan aman, dan cara memulihkan commit tanpa mengganggu alur kerja tim.
Diperbarui 28 Sep 2026  · 7 mnt Baca

Jelajahi bersama AI

ChatGPTClaudePerplexity

Sebagai developer, Anda mungkin pernah mengalami ini: Anda baru menyadari ada masalah pada kode di commit terakhir. Untuk membatalkan kesalahan ini, Anda menjalankan beberapa perintah dan menulis ulang riwayat lokal. Saat Anda menjalankan git push --force untuk merapikan semuanya, rekan satu tim memberi tahu bahwa beberapa commit hilang atau pipeline Anda menghasilkan build yang gagal.

Dalam artikel ini, saya akan menjelaskan apa yang sebenarnya dilakukan oleh git push --force, kapan menggunakannya, dan bagaimana menghindari kesalahan. Jika Anda baru mulai menggunakan Git, saya menyarankan untuk mengikuti our Introduction to Git course to learn about version control. Also, I find the Git Cheat Sheet, which you can download, is a helpful reference because it has all the most common Git terminologies and commands.

Kapan Anda Mungkin Mengira Perlu git push --force

Misalnya Anda merapikan riwayat commit lokal sebelum mendorong pekerjaan Anda. Untuk menata riwayat commit sebelum melakukan merge, Anda menjalankan git rebase -i main. Semuanya terlihat sempurna secara lokal, jadi Anda mencoba memperbarui branch remote dengan git push sederhana. Namun alih-alih pesan sukses seperti biasa, Git menampilkan error.

Anda juga mungkin menemui situasi lain saat tanpa sengaja commit data sensitif, misalnya API key atau kata sandi, lalu mendorongnya ke remote. Setelah menulis ulang riwayat secara lokal untuk menghapus commit bermasalah, Anda mendapati push biasa tidak memperbarui repositori remote, dan data sensitifnya tetap ada. Anda justru mendapat pesan error.

! [rejected]        main -> main (non-fast-forward)
error: failed to push some refs to 'origin'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.,
hint: 'git pull ...') before pushing again.

Error "non-fast-forward" ini adalah jaring pengaman Git, sebuah peringatan bahwa ada sesuatu pada riwayat Anda yang tidak cocok dengan yang ada di server. Pada titik ini, menggoda sekali untuk menjalankan git push --force guna melewati error tersebut.

Itu mungkin baik-baik saja jika Anda satu-satunya yang mengerjakan branch tersebut. Namun, pada proyek bersama, tindakan ini mudah menimbulkan kebingungan atau menghapus pekerjaan orang lain.

Apa yang Sebenarnya Dilakukan git push --force

Biasanya, Git hanya mengizinkan Anda mendorong perubahan jika branch lokal Anda berisi semua yang sudah ada di remote, termasuk commit baru Anda. Namun, kadang Anda menulis ulang riwayat commit melalui git rebase, squashing, atau menghapus data sensitif. Saat melakukan ini, branch lokal Anda akan berbeda dari branch remote. Lalu ketika Anda mencoba mendorong commit baru, Git menampilkan error yang melindungi branch remote dari kehilangan pekerjaan.

Menggunakan git push --force memberi tahu Git untuk melewatkan pemeriksaan keamanan dan menimpa branch remote dengan isi branch lokal Anda. 

Beginilah tampilannya:

git push --force origin main

Ini akan memperbarui branch main di remote agar sama dengan main lokal Anda dan menghapus commit apa pun yang tidak ada di branch lokal Anda. 

Sekarang, bayangkan branch Git Anda seperti sebuah bab dalam buku bersama yang ditulis tim Anda. Push standar ibarat menambahkan paragraf baru di akhir bab. Namun, git push --force lebih kuat: ia mencabut bab yang sekarang dan menggantinya sepenuhnya dengan versi Anda. 

Risiko menggunakan git push --force adalah kolaborator bisa kehilangan pekerjaan jika mereka mendasarkan perubahan pada commit yang baru saja Anda hapus. Pada bagian berikutnya, kita akan melihat langkah pencegahan saat bekerja dengan perintah --force.

Mengapa Ini Bisa Merusak Segalanya bagi Tim Anda

Jika Anda memaksa push perubahan ke branch bersama seperti main atau develop, Anda kemungkinan akan mengalami hal-hal berikut:

  • Branch lokal orang lain menjadi tidak sinkron: Jika rekan Anda telah menarik commit lama yang kini Anda hapus dari remote, riwayat lokal mereka tidak lagi cocok dengan server. Branch mereka akan mereferensikan commit yang telah "menghilang", menimbulkan kebingungan dan 
  • Pull menghasilkan merge yang membingungkan atau error: Ketika seseorang mencoba git pull setelah Anda melakukan force push, Git tidak tahu cara menyelaraskan riwayat yang ditulis ulang dengan urutan commit lokal mereka. Ini sering berujung pada merge commit yang aneh, error yang membingungkan, atau situasi di mana rekan diminta untuk melakukan intervensi manual dengan git fetch, git reset, atau bahkan meng-kloning ulang branch.
  • Pipeline CI/CD bisa gagal: Pipeline sering mengandalkan hash commit yang konsisten dan riwayat linear. Force push dapat menyebabkan kegagalan pengujian, melakukan deploy kode yang salah, atau crash saat membangun ulang di commit usang.

Lihat kursus CI/CD for Machine Learning kami untuk memahami cara membangun alur kerja CI/CD. Saya juga merekomendasikan kursus Introduction to Data Versioning with DVC untuk mempelajari perbedaan antara versioning data dan versioning kode.

Mari saya ilustrasikan: Anda berada di branch feature bersama rekan tim. Anda merapikan riwayat lokal, lalu menjalankan git push --force. Beberapa menit kemudian, rekan Anda mendorong perubahannya. Mereka melihat error di Git. Saat melakukan pull, mereka mendapat konflik merge dan riwayat commit yang berantakan. Sementara itu, pipeline CI Anda gagal karena commit yang hilang. Kini, rekan Anda membuang waktu untuk mengurai branch, dan deployment tertunda.

Satu force push memicu semua itu.

Opsi yang Lebih Aman: git push --force-with-lease

Untuk menghindari masalah seperti itu, saya menyarankan menggunakan git push --force-with-lease. Perintah ini menambahkan pemeriksaan keamanan saat mendorong ke branch remote untuk menghindari commit yang tidak terduga.

git push --force-with-lease origin main

Anggap --force-with-lease seperti "bertanya apakah aman sebelum terjun". Sebelum melakukan apa pun, Git memastikan tidak ada orang lain yang mengubah branch. Jika semuanya masih seperti terakhir Anda lihat, riwayat Anda diperbarui. Namun jika ada perubahan baru yang belum Anda ketahui, Git menghentikan Anda dan meminta untuk meninjau situasi terlebih dahulu. Dengan demikian, perintah ini akan selalu melindungi kolaborator dari penimpaan yang tidak disengaja.

Cara Memulihkan dari Force Push yang Buruk

Jika Anda kehilangan beberapa commit, jangan khawatir karena Anda masih bisa memulihkannya. Git selalu menyimpan catatan perubahan pada commit saat ini, termasuk penulisan ulang, dan menyimpannya di reflog.

Berikut cara Anda memulihkan commit yang hilang:

Langkah 1: Gunakan git reflog untuk menemukan commit yang hilang

Jalankan git reflog untuk melihat riwayat branch Anda.

git reflog

Anda mungkin melihat commit seperti ini:

abc1234 HEAD@{1}: push: force push
def5678 HEAD@{2}: commit: add new feature

Langkah 2: Pulihkan commit yang hilang

Setelah Anda mengidentifikasi hash commit yang ingin dipulihkan, gunakan perintah di bawah ini untuk menuju ke branch spesifik.

git checkout def5678

Langkah 3: Buat branch baru

Untuk memulihkan file dengan aman, buat git branch baru.

git checkout -b recovery-branch

Langkah 4: Pulihkan branch remote

Sekarang dorong commit yang sudah dipulihkan ke branch tersebut:

git push origin recovery-branch

Perlu diingat bahwa data reflog hanya ada di mesin lokal. Oleh karena itu, Anda mungkin tidak dapat memulihkan commit yang hilang jika tidak ada rekan tim yang menyimpannya di lingkungan lokal.

Saya merekomendasikan kursus Intermediate Git kami untuk mempelajari lebih lanjut tentang kolaborasi dan bekerja dengan branch di Git.

Praktik Terbaik untuk Menggunakan git push --force dengan Aman

Untuk mengurangi kemungkinan kerusakan, berikut beberapa kebiasaan baik yang perlu diikuti:

  • Lebih utamakan --force-with-lease daripada --force:  Metode ini lebih aman karena memeriksa apakah branch remote tidak berubah sejak fetch terakhir Anda. Saya akan membantu melindungi rekan Anda dari penimpaan yang tidak disengaja.

  • Hindari force push ke branch bersama: Jangan pernah melakukan force push ke branch bersama seperti main, master, develop, atau branch release. Lakukan force push hanya ke branch feature Anda sendiri ketika Anda satu-satunya kontributor untuk menghindari gangguan.

  • Beri tahu tim Anda sebelum melakukan force push: Jika Anda harus melakukan force push ke branch bersama, beri tahu tim. Ini memungkinkan mereka menyimpan pekerjaan dan menghindari kehilangan.

  • Gunakan protected branch: Anda juga dapat mengaktifkan perlindungan untuk branch saat menggunakan platform seperti GitHub, GitLab, dan Bitbucket. Ini membatasi penyuntingan langsung dan mencegah force push yang tidak disengaja ke branch penting.

Jika Anda ingin mempelajari lebih lanjut tentang pengelolaan repo privat, lihat kursus Introduction to GitHub Concepts kami untuk memahami cara meninjau pull request saat berkolaborasi di GitHub.

Kesimpulan

git push --force menawarkan cara yang berguna untuk menulis ulang riwayat repo Anda, baik untuk merapikan commit maupun menghapus data sensitif. Selalu berhati-hati saat menggunakan perintah ini untuk menghindari rusaknya alur kerja tim Anda.

Sebisa mungkin, gunakan --force-with-lease. Opsi ini memberi Anda lebih banyak kendali tanpa mempertaruhkan pekerjaan orang lain. Dengan sedikit kehati-hatian dan komunikasi, Anda dapat menjaga riwayat Git tetap rapi tanpa menimbulkan masalah bagi tim.

Saya menyarankan Anda melihat jalur keahlian Git Fundamentals dan GitHub Foundations kami untuk menjadi ahli dalam semua hal tentang Git.


Allan Ouko's photo
Author
Allan Ouko
LinkedIn
Penulis teknis Data Science dengan pengalaman langsung dalam analitik data, business intelligence, dan data science. Saya menulis konten praktis berfokus industri tentang SQL, Python, Power BI, Databricks, dan rekayasa data, yang berakar pada pekerjaan analitik dunia nyata. Tulisan saya menjembatani kedalaman teknis dan dampak bisnis, membantu para profesional mengubah data menjadi keputusan yang meyakinkan.

FAQs

Apa risiko menggunakan git push --force?

Ini dapat menimpa commit di branch remote, menyebabkan rekan tim kehilangan pekerjaan atau mengalami konflik merge yang membingungkan.

Bagaimana cara aman menggunakan git push --force-with-lease?

Gunakan git push --force-with-lease  alih-alih --force untuk memastikan branch remote tidak berubah sejak fetch terakhir Anda, dan membantu mencegah penimpaan yang tidak disengaja.

Apa saja skenario ketika git push --force diperlukan?

git push --force  mungkin diperlukan saat Anda melakukan rebase commit lokal, menghapus data sensitif dari riwayat, atau merapikan riwayat commit sebelum menggabungkan branch fitur.

Bagaimana cara membatalkan git push --force yang saya sesali?

Untuk membatalkan git push --force jalankan git reflog untuk menemukan commit sebelumnya, lalu pulihkan dengan checkout ke commit tersebut dan melakukan force push pada branch yang telah dikoreksi.

Apa praktik terbaik untuk menghindari kesalahan dengan git push --force?

Gunakan --force-with-lease, hindari force push ke branch bersama, berkomunikasi dengan tim Anda, dan lindungi branch penting di platform hosting Git Anda.

Topik
Git
Rekayasa Data

Belajar bersama DataCamp

Kursus

Pengantar Git

2 jam
100.6K
Pelajari dasar-dasar Git untuk version control dalam proyek perangkat lunak dan data Anda.
Lihat DetailRight Arrow
Mulai Kursus
Lihat SelengkapnyaRight Arrow
Terkait

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

Lihat SelengkapnyaLihat Selengkapnya