2015-09-04 11 views
8

Her özellik için bir Git dalına sahibim. Ancak, bazen, A dalında gelişirken, B da uygulandığında A'un nasıl davranacağını test etmek isterim.Git: İki özellik dalının test birleşimi

git checkout A 
git branch base 
git merge B 
git reset --mixed base 
git branch -D base 

Bunu yapmak için daha kısa bir yol var mı: Şu anda

, bunu kullanmaktan?

Ayrıca: Ne A ve B eğer aynı atadan değil mi?

o -- o -- o [A] 
\-- x -- o [v1_0] 
      \ -- b1 -- b2 -- o [B] 

Böyle daha kolay nasıl bir şey yapabilirim?

git checkout A 
git branch ABase 
git cherry-pick v1_0..B // only applying b1,b2 not x 
git reset --mixed ABase 
git branch -D ABase 
+2

'git merge v1_0..B'? Git yerine cherry-pick v1_0..B' demek istemiyor musunuz? – Jubobs

+0

@Jubobs: Evet, onu kiraz toplayıcısına değiştireceğim. Ayrıca sonra A'ya sıfırladım – schoetbi

cevap

1

Bir olasılık:

$ git checkout $(git rev-parse A) 
$ git merge B 
$ git checkout - # returns you to wherever you were before 

Bu altta yatan revizyon (müstakil BAŞ durumda bırakabilir) kontrol eder ve oradan değişiklikler yapar. Bu yaklaşımın yararı, artık bir şube oluşturmanıza ve silmenize gerek kalmayacaktır. Bu, iş akışını çok daha kısa yapmaz, ancak bunu bir işlevde sarmalayabilmeniz, birkaç argüman almanız ve yeniden kullanabilmeniz gerekir.

İkinci soruya gelince: ortak atalarını/belirtilerini belirlemek için merge-base'u kullanabilmeniz ve bunları birleştirmek veya kiraz alımı yapmak için kullanmanız gerekir (bu, sizin için işe yarayan bir işleve sahip olmayı düşünerek) .

İlgili konular