Güç "git push" uzak dosyaların üzerine yazmak
Benim yerel dosyalar itin ve uzak bir repo onları, birleştirme çakışmaları ile başa çıkmak zorunda kalmadan istiyorum. Ben sadece benim yerel versiyonu uzak bir önceliği var.
Nasıl Gıt ile bunu yapabilir miyim?
CEVAP
Kullanarak uzak repo yerel revizyon zorlamak gerekir
git push -f <remote> <branch>
(*örneğin 8*). <remote>
<branch>
bırakarak kapatmak tüm Şubeler itme kuvveti. --set-upstream
.
Eğer diğer insanlar bu depo paylaşıyorsanız uyardı, revizyon geçmişi yeni bir çatışma olacak. Ve eğer değişim bu noktadan sonra herhangi bir yerel taahhüt varsa geçersiz hale gelecektir.
Güncelleme: Yan not. bir daha eklemek istiyorum düşündüm Eğer Diğerleri inceleyecek değişiklikler oluşturuyorsanız, o zaman nadir bu değişiklikler ile bir şube oluşturmak ve periyodik olarak güncelliğini onları ana geliştirme şube ile devam rebase için değil. Sadece diğer geliştiricilerin bu beklemek ne anlarlar bu yüzden düzenli aralıklarla gerçekleşir.
Güncelleme 2: İzleyici sayısının artması nedeniyle zaman upstream
kuvvet bir itme deneyimi yok ne için bazı ek bilgiler eklemek istiyorum.
Repo klonlanmış ve bunun gibi bir kaç tamamlar ben eklemiş
D----E topic / A----B----C development
Ama daha sonra development
bir şube ile bana bir hata git pull
çalıştırdığımda: böyle almanıza neden olacak rebase
, vurdu
Unpacking objects: 100% (3/3), done. From <repo-location> * branch development -> FETCH_HEAD Auto-merging <files> CONFLICT (content): Merge conflict in <locations> Automatic merge failed; fix conflicts and then commit the result.
Burada çatışmalar düzeltme ve 16 ** ama bu çok çirkin bir tarih taahhüt ile beni bırakır.
C----D----E----F topic / / A----B--------------C' development
O telli ile başbaşa bırakayım çünkü git pull --force
kullanın ama dikkatli olmak eder: cazip görünebilir
D----E topic A----B----C' development
Bu yüzden muhtemelen en iyi seçenektir git pull --rebase
yapmak. Bu bana git rebase --continue
kullanacağım işlemek yerine her adım için, ancak herhangi bir çatışma çözmek için gerektirir. Sonunda geçmişi çok daha iyi görünecektir işlemek:
D'---E' topic / A----B----C' development
Güncelleme 3:Ayrıca --force-with-lease
seçeneğini kullanabilirsiniz "güvenli" kuvvet
, 24**: push
Bir ile "kira" başarısız kuvvet itme varsa verir itme kuvveti yeni (teknik olarak, eğer beklemiyordun bu uzaktan tamamlar uzaktan izleme şube haline getirilen onları henüz görmediniz) eğer yanlışlıkla başkasının üzerine yazmak istiyor musun diye kullanışlıdır hakkında henüz bir şey bilmediğini ve sadece o tamamlar kendi üzerine yazmak:
git push <remote> <branch> --force-with-lease
Tarafından
--force-with-lease
kullanma hakkında daha fazla bilgi edinebilirsiniz aşağıdakilerden herhangi birini okuma
"Varsayılan davranış;git push" ol...
&Quot;git commit" ve "git pu...
svn: çözmek için nasıl "yerel düz...
Üst "javax.sunucu uygulaması.http...
Neden Python's "Ekle" d...