2017-03-07 10 views
1

私は、それぞれのワークフローが特定の環境に展開される複数のブランチを扱っているときにワークフローを改善する方法を理解しようとしています。Git:複数のブランチ展開ワークフロー

私はgitリポジトリをホストするためにBitBucketを使用しており、それに3つのブランチがあると言うことから始めよう:origin/masterorigin/stagingおよびorigin/production

新しいタスクを完了するたびに、ローカルブランチmasterにタスクをコミットしてから、origin/masterにプッシュします。その後、ステージングにそのコミットを展開したい場合は、ブランチを開き、BitBucket機能を使用して "sync"を実行して、ブランチorigin/stagingorigin/masterと一致するようにします。

しかし、私がSourceTreeのリポジトリを見ると、私は混乱を招いているように感じ、おそらくこれを行う正しい方法ではないと感じます。

enter image description here

そして、これは、それがのBitbucket上でどのように見えるかです::

これは、リポジトリがSourceTreeにどのように見えるかであるすべての

enter image description here enter image description here

まず:それをしないのはなぜそれぞれの4番目と6番目のコミットがorigin/productionorigin/stagingであるとしますか?

第2に、私がやっていることが間違っている/改善することができたら、私は何をするべきですか?

+0

あなたのワークフローには何も問題はないと思います。 SourceTreeグラフは必要以上に複雑ですが、すべての行を慎重にトレースすると、BitBucketが示すグラフと同じであることがわかります。 – mkrieger1

答えて

1

productionおよびstagingは、masterに存在しないマージコミットがあるため、masterブランチよりも先です。あなたはSourceTreeスクリーンショットでこれを簡単に見ることができます。origin/productionが4つ(マージ)の場合はマスタより先にコミットし、4つの場合はMerged master into productionメッセージでコミットします。あなたのstagingブランチと似ています。

masterブランチを他のブランチに繰り返しマージしますが、他のブランチをマスターに戻してマージすることはありません。これは間違いではない。 「あらかじめ」カウントが気にならない限り、あなたはすべて設定されています。 masterより先にコミットしたくない場合は、productionstagingをmasterにマージするだけで済みます。これはあなたのデータの何も変更しません、マージコミットはちょうどあなたのmasterの履歴の一部になります。

+0

説明をありがとう、それは私を助けた:) – siannone

関連する問題