2016-04-04 10 views
3

最近私たちのプロジェクトにGitflowを使い始めました。私たちは頭を抱えることができないいくつかの問題を経験しています。フィーチャーブランチを最新の状態に維持する

,develop,およびhotfixというブランチを持つデフォルト設定があります。だから私は長期的な機能に取り組んでいると仮定し、これをfeature/long-timeと呼ぶことにしましょう。私の同僚は平均してfeature/short-timeで働いています。彼らは自分の進捗状況を見ることができ、安全にバックアップされるように、仕事をした後、feature/short-timedevelopにコミットし、ときどきfeature/long-termをコミットするとします。

当然ながら、feature/long-termは、developブランチを無視することができません。あまりに長くするか、遅くなります。では、ブランチfeature/long-termにブランチdevelopへの変更を定期的にどのように同期させることができますか?

私は2つのオプションに遭遇しています

  • は、単純にすべての今してgit mergeを行います。しかし、Gitflowの哲学によれば、これが本当に正しいとは思わない
  • 私は今でも数回見てきましたが、これはリモートブランチに変更をプッシュしない場合にのみ有効です。

まとめ:機能の最新の状態を正しく維持するにはどうすればよいですか?

+0

あなたのフィーチャーブランチに 'develop'をマージすることは絶対にうまくいき、唯一の良い選択です(指定した理由でリベースすることはできません)。これは元の[入門記事](http:// nvie。com/posts/a-successful-git-branching-model /)(2番目の機能ブランチを参照してください。 – poke

答えて

2

これは、マージ対リベースの議論を取り戻します。これは、複数回にわたって取り組まれています。長い話の場合は、hereを確認できます。
gitの履歴を変更すると、毎日良いことではないプッシュが強制されるため、ブランチをプッシュするとrebaseするのは良いことではありませんが、一般的にはリベースは "クリーン"

  • あなたは何らかの理由で十分なことが多いあなたのブランチをプッシュする必要が場合(コードレビューを、CI等、ブランチのビルド)あなたの最良のオプションは、merge次のとおりですので、マージ、より。
  • 変更を頻繁に押さないように、完全に独立した方法で作業できる場合は、おそらくrebaseが良い選択肢です。あなたは非常に長いタスクで作業している場合には

、リベースはあなたの主な戦略であったとしてもので、随時マージすることは良い考えです:あなたの変更はリモートリポジトリにバックアップされ 1時々から。
2.大きな数のコミットをリベースするのは、差分がコミットによってコミットされるため、現実的ではありませんが、マージでは、すべてのコミットに対して同時に計算されます。これは、多数のコミットに対して、不要な大量の競合を解決する必要がある可能性があり、マージするファイルごとに1つに減らすことができることを意味します。

要約すると、私はきれいなリポジトリを維持するためにほとんどの時間をリベースすることを提案しますが、ブランチのバックアップを保存して将来のリベースを照明するために時々合併します。

関連する問題