2013-07-25 18 views
29

Gitme sayımda bir geliştirme dalı ve bir özellik şubem var. Gelişme taahhüdünü ekledim ve şimdi bu özniteliğin şubemle birleştirilmesini istiyorum. Eğer buGeliştirme dalında git taahhütlerini bir özellik dalına nasıl birleştirirsiniz?

Bunu birleştirme işlemi ile bitiririm. Özellik bölümümde sık sık yeni işler geliştireceğimden beri, tüm bu gereksiz birleşmelerden kaçınmak istiyorum. git rebase develop yapmasını öneren bu answer'u gördüm, ancak şube yolumu çok fazla geri sarıyor ve rebase başarısız oluyor.

Güncelleme: yaptığım sona erdi ne

git checkout feature 
git merge develop # this creates a merge commit that I don't want 
git rebase # this gets rid of the merge commit but keeps the commits from develop that I do want 
git push 

Güncelleme oldu: Sadece o özellik dalına rebase birleştirme orijinal geliştirmek üzerinde farklı bir karma alır taahhüt fark ettim. Ne istediğimi sanmıyorum çünkü eninde sonunda özelliği yeniden geliştirmeye başlayacağım ve sanırım bu hoş olmaz.

+0

Hmm, iyi bildiğiniz gibi, komisyonlarınızı bir araya getirip, şubenizde çok fazla işlem yapmamanın bir yolu olarak, "birleştirme" yapabileceğinizi biliyorum. Http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html adresine bakın. – Houdini

+4

Rebasing * * * cevap sizin için çalışmıyorsa, sormanız gereken başka bir soru var * neden * çalışmıyor *. – meagar

cevap

29

Bir şubeyi diğerine birleştirmek için birleştirmeniz veya yeniden kaydetmeniz gerekir. Başka bir yerde referans alınmayan (diğer yerel şubelerle birleştirilmemiş, herhangi bir uzaktan kumandaya aktarılmayan) işlemleri yeniden yapılandırmak sadece güvenli olduğundan, genellikle birleştirmek daha iyidir.

Özellik dalınız tamamen yerel ise, bunu geliştirmenin üzerine yeniden oluşturabilirsiniz. Ancak, rebase'nin nasıl çalıştığını anlamak zaman alır ve siz yapmadan önce, yanlışlıkla kopyalanmış veya düşürülmüş işler üretmek oldukça kolaydır. Birleştirme işlemleri gürültülü görünebilir, ancak birleşme her zaman güvenli ve öngörülebilir olmaya garantilidir.

daha iyi bir görünüm için, bir grafikte her şeyi birlikte yapmayı deneyin:

git log --all --graph --oneline --decorate 

O gerçekten ihtiyaçdevelop üzerine kaydedilmesini feature birleştirilecek olup olmadığını dikkate de değer. Genellikle feature'a kadar ayrılabilecek şeyler daha sonra develop'a dönüştürülür.

Düzenli olarak feature numaralı telefona develop kodunu girmeniz gerekiyorsa, özellik dallarınızın çok uzun sürdüğünü gösteren bir işaret olabilir. İdeal özellikler, yol boyunca düzenli bütünleşmeye ihtiyaç duymadan, bağımsız olarak çalışabilecekleri şekilde bölünmelidir.

11

Yalnızca tek bir develop daldan taahhüt istiyorsanız size feature dalında bunu kiraz alabilirsiniz:

The sizin şube üstüne bir yenisi olarak uygulanacaktır taahhüt
git checkout feature 
git cherry-pick -x <commit-SHA1> 

(Götürmezse sağlanan Bir çakışma oluşturmazsınız ve feature dalını birleştirirseniz, Git çakışmaları olmadan onunla başa çıkacaktır.

İlgili konular