Git Force Push
Son güncelleme
Yerel dalınız uzak daldan ayrıştığında normal bir git push reddedilir - Git, görmemiş olabileceğiniz commit'lerin üzerine yazmaz. Force push bu kontrolü geçersiz kılar ve uzak dalı yerel dalınızla eşleştirir. Geçmişi yeniden yazdıktan (bir rebase veya amend) sonra buna ihtiyacınız olur, ancak başkalarının commit'lerini silebilir; bu yüzden daha güvenli olan --force-with-lease'i tercih edin.
Bunları terminal playground'da deneyin - tarayıcınızda gerçek bir shell, kurulacak hiçbir şey yok.
Sözdizimi
| Command | What it does |
|---|---|
git push --force | Uzak dalın üzerine yazar, güvenlik kontrolü yok |
git push -f | --force'un kısa biçimi |
git push --force-with-lease | Yalnızca bu arada başkası push yapmadıysa zorlar |
git push --force-with-lease origin feature | Adlandırılmış bir dala daha güvenli force push |
--force vs --force-with-lease
| Behavior | --force | --force-with-lease |
|---|---|---|
| Uzağın üzerine yazar | Her zaman | Yalnızca son fetch'inizden bu yana değişmediyse |
| Başkalarının commit'lerini silebilir | Evet | Bir fetch lease'i yenilemedikçe reddeder |
| Ekipler için önerilir | Hayır | Evet |
Git force push SSS
Force push'a ne zaman ihtiyacım olur?
Uzakta zaten bulunan bir geçmişi yeniden yazdığınızda - bir
git rebase, bir git commit --amend veya commit'leri sıkıştıran etkileşimli bir rebase sonrasında. Yerel dalınız artık uzağın geçmişiyle eşleşmez, bu yüzden normal bir push reddedilir ve onu yalnızca bir force push güncelleyebilir.--force ile --force-with-lease arasındaki fark nedir?
--force uzak dalın üzerine koşulsuz yazar; bu, bir takım arkadaşınızın son fetch'inizden sonra push ettiği commit'leri sessizce silebilir. --force-with-lease yalnızca uzak, en son gördüğünüz commit'te ise üzerine yazar - bu arada başkası push yaptıysa reddeder ve onların işini korur. Bir uyarı: herhangi bir fetch (bir IDE'nin arka plandaki otomatik fetch'i dahil) lease'i yeniler; bu yüzden uzağı kontrol ettikten hemen sonra push yapın. Yine de herhangi bir paylaşılan dalda --force yerine onu tercih edin.Force push tehlikeli mi?
Olabilir. Paylaşılan bir dalda, düz bir
--force başkalarının push ettiği commit'lerin üzerine yazabilir ve işlerini uzaktan fiilen siler. Yalnızca sizin kullandığınız bir dalda güvenlidir. Şüpheye düştüğünüzde, görülmemiş değişiklikleri ezmek yerine güvenli biçimde başarısız olan --force-with-lease'i kullanın.Force push'u nasıl geri alırım?
Eski commit'ler hâlâ yerelde veya
git reflog'da duruyorsa, dalınızı onlara geri sıfırlayıp önceki durumu yeniden oluşturmak için tekrar force push yapabilirsiniz. Bu, --force-with-lease kullanmak için bir neden daha - kazara üzerine yazmaları en baştan çok daha olası olmaktan çıkarır.Bunu çevrimiçi olarak deneyebilir miyim?
Evet. git push komutlarını tarayıcınızdaki gerçek bir shell'de çalıştırmak için terminal playground'ı açın - kurulacak hiçbir şey yok. Coddy'nin ücretsiz etkileşimli Git kursu, uzaklarla çalışmayı da adım adım ele alır.