0

私はこの構造を持っています:

   B - C - D <- feature
  /         \  
 A-----------E <- master  
 ^ mytag

B、C、D コミットは機能ブランチ パスです。Aは共通のベースです。この機能は、E コミットとしてマスターにマージされます。コミット A に (自動的に) タグを付けました。

機能ブランチにコミットがいくつあっても、ユーザーの介入なしに (スクリプトから) 自動的に、別のブランチで A、E (この場合) として "mytag" から "master" を選択するようにしたいと思います。

今私がする場合:

git checkout other    
git cherry-pick mytag..master

A、B、C、D、および E コミットを選択します。マスター ブランチ、つまり A と E からのみコミットを選択するようにしたいと思います。注: 逆の方法で E にマージしたくありません。マスターにフィーチャーしてほしい。そして、AからEは、それが分岐していることをまったく確信していません。それは A --- E かもしれません。「..」演算子のようなものが必要ですが、他のブランチの方法を使用する必要があります。

事前に助けてくれてありがとう!

さらに: 3 番目のブランチはチェリー ピックする必要があり、次のようになります。

F - G - H - A - E <- other 

つまり、A と E は「その他」のブランチで選択されます。

4

1 に答える 1

0

これが答えです:

call git cherry-pick -m 1 --first-parent mytag..master
if %errorlevel% == 128 then call git cherry-pick --first-parent mytag..master

--first-parentは、cherry-pickの文書化されていないオプションです。logコマンドで確認しましたが、前者でも機能しています。それはまさに私が必要とすることをしています。デフォルトでは、ブランチの親ではなく、最初の親をトラバースします。

git log --first-parent mytag..master

AEのコミット のみを返しています。-m 1オプションは、マージ コミットにのみ使用され、非マージ コミットには失敗します。だから私は試してみて、失敗した場合は-なしで。

于 2012-01-24T20:10:51.117 に答える