Bir dahaki sefere ihtiyacım olduğunda bu şık özelliği unutabileceğimden endişeliyim.
Bu itme seçeneği karşı "koruma" sen bile, çünkü unutmuş orada neden Git 2.13 (Q2 2017) açıklıyor yok de unutun git pushseviyede, hala göz ardı edilebilir.
Bkz. Commit f17d642 (19 Nis 2017), Ævar Arnfjörð Bjarmason ( avar) .
(Göre Birleştirilmiş - Junio Cı Hamano gitster- içinde 46bdfa3 tamamlama 2017 26 Apr)
push: --force-with-leasebirden çok uzaktan kumandayla belgeleyin ve test edin
Aynı URL'yi gösteren iki uzaktan kumandanın olduğu ve bir arka planda getirme ve sonrasının git push --force-with-leasegetirmediğimiz güncellenmemiş referansları bozmaması gereken durumlar için belgeleyin ve test edin .
Microsoft'un VSC'si gibi bazı editörler, arka planda otomatik getirme özelliğine sahiptir; bu,--force-with-lease--force-with-lease=<refname> buraya eklenen belgelerde belirtildiği gibi & tarafından sunulan korumaları atlar .
Yani şimdilik belgelergit push şunları içerir:
güvenliği ile ilgili genel not: olarak, yani beklenen bir değeri olmayan bu seçeneği tedariki --force-with-leaseveya --force-with-lease=<refname>
herhangi bir şeyle çok kötü etkileşimde örtülü çalışır git fetchuzak üzerine, arka planda örneğin itilmeye git fetch origin
cronjob daki depo üzerinde.
Sağladığı koruma --force, çalışmanızın temel alınmadığı sonraki değişikliklerin bozulmamasını sağlamaktır, ancak bazı arka plan süreçleri arka planda referansları güncelliyorsa bu önemsiz bir şekilde yenilir. Görmeniz beklenen ve patlamaya hazır olduğunuz referanslar için bir buluşsal yöntem olarak kullanabileceğimiz uzaktan izleme bilgisi dışında hiçbir şeyimiz yok.
Editörünüz veya başka bir sistem sizin git fetchiçin arka planda çalışıyorsa , bunu hafifletmenin bir yolu başka bir uzaktan kumanda kurmaktır:
git remote add origin-push $(git config remote.origin.url)
git fetch origin-push
Artık arkaplan işlemi çalıştığında git fetch originreferanslar origin-pushgüncellenmeyecek ve bu nedenle şu gibi komutlar:
git push --force-with-lease origin-push
Manuel olarak çalıştırmadığınız sürece başarısız olur git fetch origin-push.
Bu yöntem elbette çalışan bir şey tarafından tamamen yenilir git fetch
--all, bu durumda ya devre dışı bırakmanız ya da aşağıdaki gibi daha sıkıcı bir şey yapmanız gerekir:
git fetch # update 'master' from remote
git tag base master # mark our base point
git rebase -i master # rewrite some commits
git push --force-with-lease=master:base master:master
Örneğin base, gördüğünüz ve üzerine yazmak istediğiniz yukarı akış kodunun sürümleri için bir etiket oluşturun , ardından geçmişi yeniden yazın ve son olarak , yerel mastersürümünüzün arka fon.baseremotes/origin/master
rmhiçrm -i.bashrc içinde; Bir gün bir sunucudaki önemli bir dosyayı unutacak ve sileceksiniz. Kendi takma adınızla gitmek böyle bir soruna sahip değil :)