Git güvenlik özelliği görüyorsunuz. Git, uzak dalı şubenizle güncellemeyi reddeder, çünkü şubenizin baş taahhüdü, itmekte olduğunuz şubenin geçerli baş taahhüdünün doğrudan soyundan gelmez.
Eğer durum böyle olmasaydı, o zaman aynı depoya aynı anda iten iki kişi aynı anda yeni bir taahhüt olduğunu ve en son kim iterse, önceki iticinin işini kaybetmeden bilemezdi. bunu fark ettiler.
Tek iten kişi olduğunuzu biliyorsanız ve değiştirilmiş bir taahhüdü zorlamak veya dalı geri saran bir taahhüdü zorlamak istiyorsanız, Git'i -f
anahtarı kullanarak uzak dalı güncellemeye zorlayabilirsiniz .
git push -f origin master
Git, uzak depoların yapılandırma değişkenini kullanarak uzak uçtaki ileriye doğru itmeleri reddetmesine izin verdiğinden bu bile çalışmayabilir receive.denynonfastforwards
. Bu durumda ret nedeni şöyle görünecektir ('uzaktan reddedilen' bölümüne dikkat edin):
! [remote rejected] master -> master (non-fast forward)
Bu sorunu aşmak için, uzak deponun yapılandırmasını değiştirmeniz gerekir veya kirli bir kesmek olarak dalı silerek yeniden oluşturabilirsiniz:
git push origin :master
git push origin master
Genel olarak git push
formatı kullanan son parametre <local_ref>:<remote_ref>
, burada local_ref
yerel depodaki remote_ref
dalın adı ve uzak depodaki dalın adıdır. Bu komut çifti iki kısayol kullanır. :master
null local_ref değerine sahiptir; bu, uzak tarafa boş bir dal itme master
, yani uzak dalın silinmesi anlamına gelir . Hiçbir :
yolu olmayan bir şube adı , verilen ada sahip yerel dalı aynı ada sahip uzak şubeye iletir. master
bu durumda kısadır master:master
.