2011-03-01 17 views
10

git cherry-pick X'un bazı çakışmalara neden olabileceği bir durumla karşılaştım, ancak ek ekler oluşturdu (git diff ile doğrulandığında).Git kiraz-pick ve git gösterisi arasındaki farklar nelerdir | yama -p1?

Daha sonra git show X > my.patch yeniden çalıştırdım ve sonra ağacımda patch -p1 < my.patch yaptım. Daha iyi sonuçlara, bazı çakışmalara, ancak çok daha temiz bir sonuç elde ettim.

Git kiraz turtalarıyla ne yapar? Git 1.7.0.4 kullanıyorum.

Düzenlendi: git cherry-pick çok daha fazla kod dahil oysa temizleyici sonuçları ile , ben çıkan ağaç, çok daha fazla git show X sonuçlarını eşleşti demek.

+1

Azaltılmış bir test çantası oluşturmak için son derece yararlı olacaktır. –

+0

Burada jleedev'le birlikteyim: uyuşmazlığın açıklamasının hala anlaşılması gerçekten zor. ağacınız tam içerik iken 'git göster 'size diff gösterir. 'X'' X'' kiraz toplanan sürümü' Git gösterisi X 've 'git gösterisi X'' karşılaştırmak için daha mantıklı. 'X', farkında çok daha fazla kod içeriyor mu? – Cascabel

cevap

7

Taahhüdü seçerken, yalnızca taahhüt ettiği farklılıkları değil, tüm taahhüt verisini kullanarak sonucu verir - orijinal taahhüt mesajını ve yazıcısını alırsınız. Yama boru hattınız, istediğiniz çalışma ağacının içeriğini alacaktır, ancak daha sonra bunu kendiniz yapmak zorundasınız, umarım kiraz toplamada olduğu gibi meta verileri kopyalamak için git commit -c <original-commit> ile. Cherry-pick ayrıca, yardımcı olabilecek bazı ek seçeneklere de sahiptir ve birden fazla işi kabul edebilir (belki de liste listesi aralığı olarak belirtilir). patch açıkçası bunlardan hiçbirini desteklemiyor.

Sonucun "temizleyici" olduğunu iddia ettiğinizden emin değilim. Git'in farkı, patch'dan farklı uygulamış mı?

+1

Evet. Aldığım ağaç içi sonuçlar git-cherry-pick ve patch kullanarak çok farklıydı. Nedenini anlamaya çalışıyorum. – 0x6adb015

+0

@ 0x6adb015: Evet, git kendi dahili/yama makinesini dahili olarak kullanandan çok daha fazlasını söyleyemem, ve açıkça GNU diff ve patch ile aynı değil. Farklılıklar gördüm, ancak çoğunlukla yama, gitmenin erişime sahip olduğu kadar fazla bilgiye sahip olmadığında daha iyi yapıyor. Git'in sonucunun * yanlış * olduğunu düşünüyorsanız, bunu bir hata olarak bildirmek isteyebilirsiniz. – Cascabel

İlgili konular