Nasıl resynchronise biri rebase ya da yayınlanan bir şube için bir reset iter sonra/kurtarmak mı?
Asla, vb tehlikeli yayınlanan iş rebase gerektiğini biliriz. Ancak, bir rebase durumunda herhangi bir yemek tarifleri durumla başa çıkmak için nasıl gönderildi görmedimyayınladı.
Şimdi, Eğer bu gerçekten mümkünse depoyu sadece klonlanmış tarafından bilinen (ve tercihen küçük) bir grup insan, böylece kim iter rebase veya sıfırlayabilirsiniz haber herkes bunu gereken dikkat bir dahaki sefere satmışlar(!).
Gördüğüm en bariz çözüm foo
hiçbir yerel işleyen varsa çalışır ve rebased alır:
git fetch
git checkout foo
git reset --hard origin/foo
Bu sadece uzak depo başına tarihinin lehine foo
yerel devlet atar.
Ama nasıl bir dalın üzerine önemli yerel değişiklikler yapmış olduğu bir durum mu?
CEVAP
Eger bir rebase sonra senkronize geri almak gerçekten çoğu durumda o kadar da karmaşık değil.
git checkout foo
git branch old-foo origin/foo # BEFORE fetching!!
git fetch
git rebase --onto origin/foo old-foo foo
git branch -D old-foo
Yani. ilk olarak, uzak şube başlangıçta olduğu için bir yer imi ayarladıktan sonra rebased uzak şube üzerine bu noktadan itibaren yerel tamamlar itibaren yeniden kullanın.
Eğer sorunu çözmek değil mi, bunu sadece daha fazla ihtiyacımız var. Rebasing şiddet gibi: fonksiyonu
origin/foo
KİMLİK kaydetme kadar ön rebase görünüyorsun, ve bunu kullanırsanız elbette işareti olmadan yapabilirsiniz.
Bu bir yer imi yapmak unuttun durumu nasıl başa daöncegetiriliyor. Hiçbir şey kaybolur – sadece uzak şube için reflog kontrol etmeniz gerekir:
git reflog show origin/foo | awk '
PRINT_NEXT==1 { print $1; exit }
/fetch: forced-update/ { PRINT_NEXT=1 }'
Bu baskı origin/foo
tarihi değiştiren en son önce almaya işaret ettiği KİMLİĞİ taahhüt edecektir.
O zaman sadece
git rebase --onto origin/foo $commit foo
Nasıl daha sonra düz metin alma için e...
Nasıl jQuery Ajax çağrısından sonra bi...
Nasıl Gıt zulası düştü kurtarmak için?...
Nasıl Gıt mevcut şube adı almak için?...
Nasıl içeren bir taahhüt verilen şube ...