2015-09-04 24 views
8

私は各機能にGitブランチを持っています。しかし、ブランチAで開発する場合、Bも同様に適用された場合、Aがどのように動作するかをテストしたいことがあります。現時点でGit:2つの機能ブランチのテスト組み合わせ

、私はこれを使用します。

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

これを行うには短い方法はありますか?

さらに、ABが同じ祖先を共有しない場合はどうなりますか?

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

私はこれをもっと簡単に行うことができますか?

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 cherry-pick v1_0..B'を代わりに使うのではないですか? – Jubobs

+0

@Jubobs:はい私はチェリーピックに変更します。その後、私はAにリセットした – schoetbi

答えて

1

一つの可能​​性:

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

これは、基礎となるリビジョンをチェックアウト(デタッチHEAD状態であなたを残して)、そこから変更を行います。この方法の利点は、ブランチを作成および削除する必要がなくなったことです。これはワークフローをはるかに短くするものではありませんが、関数内でこれを囲み、いくつかの引数を取って再利用できるはずです。

merge-baseを使用して共通の祖先を特定し、コミットをマージまたはチェリーピックすることができます(この機能はあなたのために機能すると思います) 。

関連する問題