3

アプリケーションの2つのバージョンを2つのブランチで維持しています:freeおよびmastermasterアプリケーションのプレミアムバージョンです)。これらのブランチはかなり似ていmasterますが、バージョンにはない追加のアプリケーション機能がいくつかあるfreeため、2つのブランチを継続的に維持する必要があります。

定期的に、バグを修正したり、ブランチに機能を追加したりする必要があります。これらの機能は、完了時にブランチにfree適用する必要がありmasterます。そのような作業ができたら、freeたとえば、と呼ばれるに基づいて新しいブランチを開始しますnewfeature。機能が完了したら、newfeatureX個の新しいコミットがあります。

にマージする前にnewfeaturefreeに含まれているすべてのコミットからパッチを生成するために使用できるコマンドを知りたいのですが、newfeatureこれをに適用する必要がありますmaster。現在、私はこれを行っています:

git format-patch aa99f9..e94904

方法を知っている限り、実際に分岐したときの特定のコミットIDnewfeatureと、の最後のコミットを検索する必要newfeatureがあります。これはドラッグです。コミットIDには興味がなく、入力する必要はありません。

私が話しているコミットをgitが判断する、一貫して使用できる単一のコマンドが必要です。これは毎回同じパターンです。ブランチが与えられた場合、の共通の祖先からコミットnewfeatureのパッチを生成したいと思います。newfeaturefreenewfeature

コミットIDを手動で検索する必要をなくすチェンジセット式はありますか?

PS:AFAIK、ブランチgit rebase全体をにマージするため、このタスクを実行するために使用することはできません。ブランチに固有のコミットをにマージしたいだけです。freemasternewfeaturemaster

4

1 に答える 1

1

具体的にあなたが求めているのは:

git format-patch `git merge-base newfeature free`..newfeature

これを行うことで、おそらく時間を節約できます。

git checkout master
git cherry-pick `git merge-base newfeature free`..newfeature

ワークフローによっては、機能をマージする前にパッチを作成する必要がある場合があります。すなわち:

git checkout newfeature
git rebase free
git format-patch free

確かに聞こえますが、無料のプレミアムをベースにして、無料の機能をプレミアムブランチにマージするだけで、ワークフローを改善できるようです。

于 2013-02-04T17:21:57.223 に答える