2

の機能を開発中feature/xです。この機能を時々 にマージし、同期を維持するために にマージする必要がmasterありますmasterfeature/xブランチはfeature/xリモート ブランチとしても存在するため、リベースはあまり良い選択肢ではありません。

master将来のある時点まで、実際の機能を無効/非表示にしたいと考えています。master実際、 UI で非表示にすることで開発中の機能を無効にするが、基になるメカニズムを保持するように、コミット K を作成できるようにしたいと考えています。

また、からmasterfeature/xマージするときに、K を除くすべてのコミットを取得できるように、これを機能させたいと思います。feature/xmastermaster

私はもう試した

git co master
git commit -am "disable feature x for now"
    => created commit 12345678
git co feature/x
git merge -s ours 12345678

masterこれは、私が行うときに機能が再度有効になることを除いて機能します

git co master
git merge feature/x

そのため、-s oursfrom mastertofeature/xとマージしても、両方の方法でマージされるわけではないようです。feature/xしたがって、 からにマージするたびにmaster、機能を再度無効にする必要があり、その後、この無効化コミットが に戻りfeature/xます。より良い方法はありますか?

4

2 に答える 2

1

機能フラグ (または機能トグル) の使用を検討してください。

これにより、コードをマスターにマージできますが、フラグが切り替えられた後にのみ利用可能になります (機能が有効になります)。

利点は多数あります。

  • より簡単なコード管理 (コードはライブです)
  • 何か問題が発生した場合の簡単なフォールバック: フラグをもう一度切り替えるだけです
  • 簡単な段階的稼働: 少数のユーザーに対してのみ機能を有効にする

欠点: これらのフラグを管理するには、コードを追加する必要があります。ただし、言語/コーディング プラットフォームによっては、これをサポートするライブラリが既に利用可能になっています。

于 2013-11-26T14:33:52.460 に答える
1

問題は、あなたが実際にやろうとしているのリベースだということです。リベースを行うたびに新しいブランチをスピンすることもできますが、これを行う頻度によっては非現実的かもしれません。

feature/disable_xこれは余分な手順ですが、無効にするパッチだけを含む(リモート化されていない) ブランチをセットアップできますx。次に、マージするときfeature/xに、リベースしてマージdisable_xします。

于 2013-11-26T14:25:50.910 に答える