Anda melihat fitur keamanan Git. Git menolak untuk memperbarui cabang jarak jauh dengan cabang Anda, karena komit cabang Anda bukan keturunan langsung dari komit kepala saat ini dari cabang yang Anda dorong.
Jika ini tidak terjadi, maka dua orang yang mendorong ke repositori yang sama pada waktu yang sama tidak akan tahu bahwa ada komit baru yang datang pada saat yang sama dan siapa pun yang mendorong terakhir akan kehilangan pekerjaan pendorong sebelumnya tanpa salah satu dari keduanya. mereka menyadari hal ini.
Jika Anda tahu bahwa Anda adalah satu-satunya orang yang mendorong dan Anda ingin mendorong komit yang diubah atau mendorong komit yang memutar kembali cabang, Anda dapat 'memaksa' Git untuk memperbarui cabang jarak jauh dengan menggunakan -f
sakelar.
git push -f origin master
Bahkan ini mungkin tidak berfungsi karena Git memungkinkan repositori jarak jauh untuk menolak dorongan tidak cepat di ujung dengan menggunakan variabel konfigurasi receive.denynonfastforwards
. Jika demikian, alasan penolakan akan terlihat seperti ini (perhatikan bagian 'jauh ditolak'):
! [remote rejected] master -> master (non-fast forward)
Untuk menyiasatinya, Anda harus mengubah konfigurasi repositori jarak jauh atau sebagai peretasan kotor yang dapat Anda hapus dan buat kembali cabang dengan demikian:
git push origin :master
git push origin master
Secara umum parameter terakhir yang git push
menggunakan format <local_ref>:<remote_ref>
, di mana local_ref
adalah nama cabang pada repositori lokal dan remote_ref
adalah nama cabang pada repositori jarak jauh. Pasangan perintah ini menggunakan dua singkatan. :master
memiliki local_ref nol yang berarti mendorong cabang null ke sisi jarak jauh master
, yaitu menghapus cabang jarak jauh. Nama cabang tanpa :
berarti mendorong cabang lokal dengan nama yang diberikan ke cabang jauh dengan nama yang sama. master
dalam situasi ini adalah kependekan dari master:master
.