Skip to main content
Engineering Notes · February 2014

Membatalkan Push ke Remote Git Repository

Portrait of Komang Artha Yasa — technology leader, two decades building digital platforms across marketplaces, retail, logistics, fintech, and banking.

Pagi ini dimulai dengan seorang rekan yang melaporkan masalah — tanpa sengaja meng-push local commits yang belum teruji ke branch master di remote repository — dan minta tolong me-reset ke latest stable commit.

Soal successful branching model dan kenapa hal seperti ini sebaiknya tidak terjadi di tempat pertama, kita lewati dulu — itu topik post tersendiri. Yang dibutuhkan sekarang adalah resep enam baris.

git fetch
git checkout [branch]
git log -n [num]
git reset --hard [commit_hash]
git clean -f -x -d
git push --force origin [branch]

Apa yang Dilakukan Tiap Baris

  • git fetch — sinkronisasi ref dari remote tanpa mengubah working tree.
  • git checkout [branch] — pindah ke branch yang akan di-reset.
  • git log -n [num] — tampilkan [num] commit terakhir untuk mencari hash stable commit yang dituju.
  • git reset --hard [commit_hash] — pindahkan tip branch lokal ke commit tersebut, sekaligus menyamakan working tree.
  • git clean -f -x -d — hapus untracked files, termasuk yang di-ignore — biar working tree benar-benar bersih.
  • git push --force origin [branch] — push ulang ke remote dengan force, menimpa state remote dengan state lokal.

Catatan: --force menulis ulang sejarah remote. Aman jika branch ini hanya dipakai sendiri atau seluruh tim sudah diberi tahu. Kalau ada orang lain yang sudah pull commit yang akan dibuang, force-push akan menyebabkan divergensi yang mereka harus selesaikan secara manual.

That’s it. Thanks, git.