Şubenizin masterhem burada hem de uzaktan çağrıldığını ve uzaktan kumandanızın çağrıldığını varsayarak originşunları yapabilirsiniz:
git reset --hard <commit-hash>
git push -f origin master
Ancak, başka biri uzak deponuzla çalışıyorsa ve değişikliklerinizi yaptıysa bunu yapmaktan kaçınmalısınız. Bu durumda, istemediğiniz taahhütleri geri almak daha sonra normal şekilde itmek daha iyi olacaktır .
Güncelleme: aşağıda, diğer kişilerin ittiğiniz değişiklikleri çektiğini açıkladınız, bu nedenle tüm bu değişiklikleri geri alan yeni bir taahhüt oluşturmak daha iyidir . Jakub Narębski'nin bu cevabında bunu yapmak için seçeneklerinizin güzel bir açıklaması var . Hangisinin en uygun olduğu, geri almak istediğiniz taahhütlere ve hangi yöntemin sizin için en anlamlı olduğuna bağlıdır.
git reset --hardSorunuzdan, masterşubenizi sıfırlamak için zaten kullandığınız açık olduğu git reset --hard ORIG_HEADiçin, şubenizi daha önce bulunduğu yere geri taşımak için kullanmaya başlamanız gerekebilir . (Her zaman olduğu gibi birlikte git reset --hard, emin olun git statusdoğru dal üzerinde olduğuna göre, güvenilir olduğundan size ediyoruz farkında git reflogbir araç görünüşte kaybetti kaydedilmesini kurtarmak için.) Ayrıca kontrol etmelisiniz ORIG_HEADile sağ işlemeye puan git show ORIG_HEAD.
Sorun giderme:
" ! [Uzaktan reddedildi] a60f7d85 -> master (ön alma kancası reddedildi) " gibi bir mesaj alırsanız
belirli bir dal için dal geçmişinin yeniden yazılmasına izin vermeniz gerekir. Örneğin BitBucket'te "Şube geçmişinin yeniden yazılmasına izin verilmiyor" yazıyordu. Allow rewriting branch historyKontrol etmeniz gereken bir onay kutusu var.
origin/masterDiğer kullanıcılar tarafından çekilmediğinden ve aktarılmadığından emin misiniz ? Genel (yerel olmayan) bir deponun geçmişini değiştirmek her zaman kaçınmak istediğiniz bir şeydir.