SORU
3 Kasım 2010, ÇARŞAMBA


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
3 Kasım 2010, ÇARŞAMBA


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

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • bigky226

    bigky226

    11 HAZİRAN 2006
  • Moodle

    Moodle

    11 Mayıs 2010
  • Peyton

    Peyton

    28 Aralık 2008