Uzak ve çıplak olmayan bir "main" repo kurdum ve bilgisayarıma klonladım. Bazı yerel değişiklikler yaptım, yerel depomu güncelledim ve değişiklikleri uzak depoma geri ittim. O noktaya kadar her şey yolundaydı.
Şimdi, uzak depoda bir şeyi değiştirmem gerekiyordu. Sonra yerel depomdaki bir şeyi değiştirdim. Uzak depodaki değişikliğin gerekli olmadığını fark ettim. Bu yüzden yerel depomdan uzak depoma git push
yapmaya çalıştım, ancak şöyle bir hata aldım:
Geçmişi kaybetmenizi önlemek için, hızlı ilerlemeyen güncellemeler reddedildi Tekrar itmeden önce uzaktaki değişiklikleri birleştirin. Bkz: 'Not about fast-forwards' bölümünün
git push --help
kısmından ayrıntılara ulaşabilirsiniz.
Düşündüm ki muhtemelen bir
git push --force
yerel kopyamı değişiklikleri uzaktaki kopyaya göndermeye ve aynı hale getirmeye zorlayacaktır. Güncellemeyi zorluyor, ancak uzak depoya geri dönüp bir işlem yaptığımda, dosyaların eski değişiklikler içerdiğini fark ediyorum (ana uzak deponun daha önce sahip olduğu değişiklikler).
Cevaplardan birine yapılan yorumlarda](https://stackoverflow.com/questions/5509543/how-do-i-properly-force-a-git-push#comment6275726_5509588) belirttiğim gibi:
[I] zorlamayı denedim, ancak değişiklikleri kaydetmek için ana sunucuya geri döndüğümde, eski evreleme alıyorum. Bu nedenle, işlediğimde depolar aynı değil. Ve tekrar git push kullanmaya çalıştığımda aynı hatayı alıyorum.
Bu sorunu nasıl çözebilirim?
Sadece yap:
git push origin <your_branch_name> --force
veya belirli bir deponuz varsa:
git push https://git.... --force
Bu, önceki commit(ler)inizi silecek ve mevcut commit'inizi itecektir.
Uygun olmayabilir, ancak bu sayfaya rastlayan biri olursa, basit bir çözüm isteyebileceğini düşündüm...
Ayrıca -f
nin --force
un kısaltması olduğunu unutmayın, yani
git push origin <your_branch_name> -f
da işe yarayacaktır.
Öncelikle, ben olsam doğrudan "main" reposunda herhangi bir değişiklik yapmazdım. Eğer gerçekten bir "main" repo'ya sahip olmak istiyorsanız, o zaman sadece ona itmelisiniz, asla doğrudan değiştirmemelisiniz.
Aldığınız hata ile ilgili olarak, yerel deponuzdan git pull
ve ardından ana depoya git push
yapmayı denediniz mi? Şu anda yaptığınız şey (eğer iyi anladıysam) push'u zorlamak ve ardından "main" repo'daki değişikliklerinizi kaybetmektir. Değişiklikleri önce yerel olarak birleştirmelisiniz.
Gerçekten tavsiye ederim:
yalnızca ana depoya itin
Ana deponun bir bare repo olduğundan emin olun, böylece ana deponun çalışma ağacının .git
tabanı ile senkronize olmamasıyla ilgili herhangi bir sorun yaşanmaz. Bakınız "Yerel bir git deposunu başka bir bilgisayara nasıl itebilirim?"
Ana (çıplak) depoda değişiklik yapmanız gerekiyorsa, onu klonlayın (ana sunucuda), değişikliğinizi yapın ve geri itin
Başka bir deyişle, hem ana sunucudan hem de yerel bilgisayardan erişilebilen çıplak bir repo bulundurun, böylece çekilecek/çekilecek tek bir yukarı akış reposuna sahip olun.