2016-07-15 8 views
3

http://docs.gitlab.com/ee/workflow/gitlab_flow.htmlのGitLabの推奨フローを理解しようとしています。しかし、私はこの文については本当によく分からない:GitLabのホットフィックス

あなたはチェリー選ぶ機能ブランチにそれを開発し、マージとマスターにマージ に共通している修正プログラムにコミットする必要がある場合は 要求、機能ブランチを削除しないでください。もしマスターが良い(それは あなたが練習継続的な配達でなければならない)あなたはそれを を他の枝にマージするのが良いです。

マスターにコミットが1回以上あるのでしょうか?たとえば、最初のコミット(実際にマージ要求)は、修正が機能しているかどうかをテストすることです.2番目のコミットは、最初のコミットが失敗したときです。

もう1つのことは、(私たちがプロダクションブランチを持っているので)ホットフィックスをマスターにマージすると、マスターに他の機能を配備する必要があると思いますか?それ以外の場合は、masterのプロダクトブランチをプロダクションブランチにコミットします。

実際に提案されたフローは、http://nvie.com/posts/a-successful-git-branching-model/の別のフローほど詳細ではありません。だから、ちょっと混乱します。

答えて

1

このワークフローのキーは、正しいポイントからバグ修正ブランチを作成することです。これをあなたの現在の履歴とします:

master o-------o-----o 
       \-----o 
       br1 

masterブランチを修正する必要があります。これを行うには、必要に応じてmasterbr1に両方をマージしますmasterから始まる機能ブランチを作成します。

master o-------o-----o--o 
       \-----o--+ 
       | bf1 | 
       \-----o--o 
       br1 

このワークフローを使用すると、バグ修正を追跡し、必要な任意の枝にそれを適用することができます。

master o-------o-----o-------o 
       \-----o /
       br1 \-----/ 
         bf1 
+0

upvote for ascii art。基本的には、あなたが修正プログラムブランチを作成する前に 'git checkout master'を実行するようにしてください:)疑いのあるときは、' git status'はあなたの友達です。 – Gimby

+0

修正プログラムは、本番環境で何かを修正するためのものです。私は、代わりにプロダクションブランチからホットフィックスブランチを作るべきだと思います。次に、マスター(統合ブランチ)にマージします。その後、生産ブランチをチェリーにして、マスターからコミットを選んでください。私の論理がOKかどうかわかりません。 – sancho21

+1

@ sancho21 'hotfix'ブランチを' production'ブランチにマージする必要があります( '--no-ff'と' --log'オプションを使います)。 'master 'をプロダクションブランチにマージするのに問題がなければ、私はそれを疑う。その後、 'hotfix'ブランチもmasterにマージします。 – Frodon

0

ドキュメントからhttps://docs.gitlab.com/ee/workflow/gitlab_flow.html

で:あなたがマスターにそれをマージする場合、ブランチ br1もマージされますので、

回避するための間違いは、枝br1から始まるバグフィクスブランチを作成することです

修正プログラムでコミットを選択する必要がある場合は、フィーチャーブランチ上でそれを開発し、マージ要求でマージするのが一般的ですが、フィーチャーブランチは削除しないでください。マスターがうまくいけば(それはあなたが継続的な配達を練習しているならば)、あなたはそれを他の支店に併合します。より多くの手動テストが必要なため、これが不可能な場合は、機能ブランチからダウンストリームブランチにマージ要求を送信できます。

私は、ポイントは、あなたは常に "下り坂"をマージすると思います。つまり、マスター→ステージング→プロダクションになりますが、プロダクションではなく、マスターになります。修正プログラムを "チェリーピック"したい場合は、それをフィーチャーブランチとして実行します。その機能ブランチは、それを閉じずにマスタにマージされます。必要に応じてテストされ、その機能ブランチは、ステージングとその後の生産ラインに統合されるのが良いです。

0

これは実際の質問に対する回答ではありません。もっと "リバウンド"。

私は実際にマスターと生産のブランチでGitlab・フローを使用しています: *マスターは *生産ステージングに展開されているが* preprod に配備され、製造上のタグは、修正プログラムについては

生産で展開されている、私の理解でした:

  • マスター(HEAD)からブランチを作成します。修正する。コミット。
  • テストに合格したときに、生産
  • にマージ要求をチェリー選び、最終的には、修正プログラムをリリースする新しいタグを作成して、マスター
  • にマージ要求を作成します。

しかし、私は最近、一つの問題に来る:

  • 私は 生産異なるたファイルを修正するために、マスターからhotfixブランチを作成した(機能によって更新がマスターにマージされますが まだで生産。
  • 私は問題なく習得するためにそれをマージ。
  • しかし、生産にチェリーピックは矛盾した。だから、私は手で競合を解決して行く必要があります。

これ、私は次のことを考えさせる:

私は本番1からhotfixブランチを作成した場合はどうして習得するダウンチェリー選びますか?

関連する問題