2010-03-01 7 views
77

Uzak bir dalı izleyen bir yerel konu dalı var.Git: Ayrılmış bir yerel daldaki tüm değişiklikleri atın.

A--B--C--O1--O2--O3 (origin/phobos) 
     \ 
     L1--L2--L3 (phobos) 

göreceli baktı geçmişlerini işlemek, şimdi yerel phobos şubesine tüm değişiklikleri atmak ve doğrudan olmak üzere geri almak istiyorum: Tartışmanın iyiliği için, taahhüt geçmişleri aşağıdaki gibi olduğunu origin/phobos kopyası, böylece yerel tarih şuna benzer:

A--B--C--O1--O2--O3 (phobos origin/phobos) 

gerçekten phobos dalına yerel değişiklikler istemiyorum ve gerçekten herhangi birleştirmeleri kökenli depo gösterilmesini istemiyorum sonradan. (Yani, sadece birleştirme benim aklımda değil.)

Bu gerçekten kolay olmalı gibi görünüyor, ama google-fu'm beni başarısız oldu. Bunu nasıl yaparım?

cevap

60

dalını sil, sonra yeniden oluşturun:

$ git branch -D phobos 
$ git checkout --track -b phobos origin/phobos 
+0

Harika. Bu mükemmel çalıştı. –

+25

Şubenin başını sıfırlamaya karşı bu yaklaşımla ilgili bir sorun, şube dallarını silme işleminin şubenin reflog'undan kurtarmasıdır. Şube sıfırlanırken, diğer yandan sadece yeniden işlenmeyi korumakla kalmaz, aynı zamanda geri yüklemede de sıfırlamayı kaydeder. Bu, gerekirse operasyonun daha sonra kolayca geri alınabilir olmasını sağlar. –

+5

@Electrons_Ahoy Kabul edilen yanıtı Dan'ın (burada nasıl yapması gerektiği gibi benim gibi insanların daha güvenli bir yöntem seçmesi muhtemeldir) değiştirmenizi öneririz. –

219
git checkout phobos 
git reset --hard origin/phobos 

Bu Git origin/phobos olarak işlemek aynı üzere phobos başını sıfırlamak için, ve maç için çalışma ağacı güncellemek için söyler.

+24

IMO bu kabul edilen cevap olmalı; Bu, dallanma işaretçisini, çıkarma/yeniden oluşturma ile ameliyat yapmak yerine "sıfırlama" komutunu verir. – vdboor

+0

Aslında bunu önce denedim ve yerel kopya tarafından neredeyse kullanılamaz hale getirilen bir ton hata attı. Silme/yeniden oluşturma daha az zarif olabilir, ancak herhangi bir takip sorusu sormak zorunda kalmam. –

+3

@Electrons_Ahoy: Hmm, bu kesinlikle normal değil. Repo'nuz iyi çalışıyorsa, bu sıfırlamayı yapmak normal olarak sorunsuz bir işlem olmalıdır. –