Kullanarak yerel repounuzu uzak repoya zorlayabilmelisiniz.
git push -f <remote> <branch>
(örneğin git push -f origin master
). Bırakmak <remote>
ve <branch>
ayarlanmış tüm yerel şubeleri zorlar --set-upstream
.
Sadece uyarın, eğer başkaları bu depoyu paylaşıyorsa, revizyon geçmişi yenisiyle çakışacaktır. Ve değişiklik noktasından sonra herhangi bir yerel taahhütleri varsa geçersiz olurlar.
Güncelleme : Bir yan not ekleyeceğimi düşündüm. Başkalarının inceleyeceği değişiklikler oluşturuyorsanız, bu değişikliklerle bir şube oluşturmak ve bunları ana geliştirme dalıyla güncel tutmak için periyodik olarak yeniden oluşturmak nadir değildir. Diğer geliştiricilerin bunun düzenli olarak olacağını bilmelerini sağlayın, böylece ne bekleyeceklerini bilecekler.
Güncelleme 2 : Görüntüleyenlerin sayısının artması nedeniyle, upstream
bir zorlama uygulandığında ne yapacağınız konusunda bazı ek bilgiler eklemek istiyorum .
Diyelim ki repo klonladım ve böyle birkaç taahhüt ekledim:
D ---- E konu
/
A ---- B ---- C gelişimi
Ama daha sonra development
şubeye rebase
koştuğumda böyle bir hata almama neden olacak bir a çarptı git pull
:
Nesneleri ambalajından çıkarma:% 100 (3/3), bitti.
<Yeniden konumlandırma>
* şube geliştirme -> FETCH_HEAD
Otomatik olarak birleştirme <files>
CONFLICT (içerik): <locations> içindeki çakışmayı birleştir
Otomatik birleştirme başarısız; anlaşmazlıkları düzeltin ve ardından sonucu kesin.
Burada çatışmaları çözebilirim commit
, ama bu beni gerçekten çirkin bir taahhüt tarihiyle bırakacaktı:
C ---- D ---- E ---- F konu
/ /
A ---- B -------------- C 'gelişimi
Kullanmak cazip gelebilir, git pull --force
ancak dikkatli olun çünkü sizi mahsur taahhütlerle bırakacaktır:
D ---- E konu
A ---- B ---- C 'gelişimi
Yani muhtemelen en iyi seçenek bir yapmaktır git pull --rebase
. Bu, daha önce olduğu gibi herhangi bir çatışmayı çözmemi gerektirecek, ancak taahhütte bulunmak yerine her adım için kullanacağım git rebase --continue
. Sonunda taahhüt tarihi çok daha iyi görünecek:
D '--- E' konusu
/
A ---- B ---- C 'gelişimi
Güncelleme 3: Bu --force-with-lease
seçeneği cevabı Cupcake tarafından belirtildiği gibi "daha güvenli" bir kuvvet itme olarak da kullanabilirsiniz :
"Kira" ile zorla itme, uzaktan kumandada beklemediğiniz yeni taahhütler varsa (teknik olarak, henüz uzaktan izleme şubenize almadıysanız) zorla itmenin başarısız olmasına izin verir; henüz bilmediğiniz bir başkasının taahhütlerinin üzerine yanlışlıkla yazmak istemezsiniz ve sadece kendinizin üzerine yazmak istersiniz:
git push <remote> <branch> --force-with-lease
--force-with-lease
Aşağıdakilerden herhangi birini okuyarak nasıl kullanılacağı hakkında daha fazla bilgi edinebilirsiniz :
git push origin --force
sizin için çalışmaz?