2016-09-10 19 views
0

以下に説明する分岐とマージの具体的なシナリオはありますか::Git分岐とマージ

私はgit repoに "Master"ブランチを持っています。フィーチャー・ブランチには 「Feature1」と呼ばれ、およそ200人が働くマスターから取られています。今私は約20人が働く "Team_Feature"と言う別の枝を取ってみたい。その間、 "Team_Feature"ブランチを "Feature1 Branch"と同期させておく必要があります。 "Feature1"ブランチが完了すると、それがマスターにマージされ、新しいブランチ "Feature 2"が取られます。この間、私のチームは "Team_Feature"を継続し、 "Feature 2 branch"とマージします。

今、私はFeature1ブランチをTeam_Featureにリベースしました。これは毎週1回実行されます。

問題に直面:: 私はリベース二度目は、私は多くの人が多くの競合が(追加/追加)タイプであった

  1. の下に言及した別の例に属し、競合をマージしまった
  2. 多くがあった(名前変更/ delete)
  3. 多くの場合、Team_Featureブランチで変更されていないファイルの競合が編集競合です。
  4. 紛争のいくつかは正当なものでした。だから、質問がある

、これは名前の変更、削除/名前の変更、追加/追加/競合の名前を変更され

  1. 何?
  2. これらの競合を引き起こす原因は何ですか?
  3. どのように回避するには?
  4. 上記のリストで最も重要な疑いは3番です。

助けてください、事前に感謝:)

答えて

0

目的:

  1. は、チームの機能を維持
  2. を習得するためにそれをマージマスターと同期して、将来的には特長1をキープフィーチャー1と同期して、今後は フィーチャー2にマージする

ソリューション:

  1. 特長2が来たら(上記のポイント#後1)機能をチームに特長1をマージ
  2. をキープ毎日特長1にマスターをマージ
  3. をキープ既存のものに、フィーチャー2をチームフィーチャーに日常的にマージします。だから、質問がある

、これは名前の変更、削除/名前の変更、追加/追加/競合の名前を変更され

何?

これらの競合がトリガする原因は何ですか?

- >これを理解するためのリンクがたくさんあります(名前の変更/削除、名前の変更/名前の変更)。基本的には、マージの両方のブランチのファイルに対するツリーレベルの変更です。追加/追加を除き - >これはファイル内容レベルの競合です。同じファイル内の同じ行番号で異なる内容を追加するのと同じです。

どのように避けるべきですか? 使用が代わりに分岐する機能を切り替えますと、このような複雑な分岐の代替で作業

  • は避けてくださいすることができます。

  • あなたは機能ブランチモデルで作業している場合は、あなたが作業しているエリアについて チームを完了するために、メールを書き、など、名前の変更、削除などのその地域の木 レベルの変更を行わないようにそれらを求めることがあります コンテンツの競合を解決するのはずっと簡単ですが、ツリーレベルの競合を解決するには苦労します。

  • 最後に、ブランチで働く大きなチームで競合を避けることは容易ではありません。

このような場合、複雑なマージの競合を避けるために、トグルを使用することを強くお勧めします。 - トグルは、その機能をトグルフラグに基づいて2つの方法で実行できるようにする機能のランタイム時の状態(フラグ)です。すべての機能は、1つのブランチでのみ切り替えられます。

例: - 私たちは最初の値が、いくつかのファイルに格納されたコードで今すぐ

を= new_details_page真の言うトグルを設定します

は、我々は新しいの詳細ページを実装しているとしましょう(真new_details_page ==)

{ 'oldPage' レンダリング}他{ は 'NEWPAGE' をレンダリング}場合、私たちは、この ようないくつかのものを持っています

新しい詳細ページの作業が完了せず、古い詳細ページで製品をリリースしたい場合は、そのフラグをfalseにしてアプリケーションをビルドし、リリース環境にデプロイするだけです。

最後に、マージの競合を避けるための最良の解決策は、トグルを使用することです。トグルと機能の分岐についてインターネットで詳しく読むことができます。