2016-11-28 11 views
2

私たちは一般的にgitに比較的新しいです。私たちはこれを約6ヶ月間使っており、GitHubとBitBucketを使っています。私たちは可能な限りGitBashを使って学び、gitの核心を得ることを試みました。GitHubのフローとリリース

我々は分岐戦略を本当に検討したい段階にあり、私はいくつかの研究を行ってきました。

私の意見では、GitFlowは私たちの要求に対して非常に複雑です。我々はおそらく合計20の異なるプロジェクトに取り組み、各プロジェクトは2ヶ月に1回程度しかリリースしないかもしれません。 GitHub Flowを見てみると、これは私たちのニーズを満たすかなり単純な選択肢に見えますが、私は人々の意見を欲しがる欠陥があるようです。

マスターブランチ内のものはすべて展開可能です。私たちはUAT/QA環境に展開します。その環境では、クライアントおよび/または私たちがすべてのものを署名するのにかかる時間に応じて、そのリリースが3〜4週間続く場合があります。その間に、誰か他の誰かがまったく違うことに取り組む必要があるかもしれません。この段階で、Github Flowのフローに基づいて、そのユーザーがMasterからブランチを取得した場合、現時点で実際にQA環境にある変更を含めることになります。だから、私はGitHub Flowの最初の点を誤解していますか?つまり、マスターブランチ内のものはすべてデプロイ可能です。コードがQAなどを経ていれば、真実になるでしょうか?

その場合は、フローは実際より

  • は(この段階でのみバックブランチに)
  • は、ブランチの変更をコミットし、マスターから
  • マージブランチをブランチを取る?:ように見えるん
  • QA/UATにリリース
  • リリースが承認されたら、ブランチをMasterとマージして展開しますか?

私はそれが私たちを混乱しているGitHubの流れに特異的にポイント1だと思う - リリースがQAにまだあるとき、我々は確実にマスターにプッシュバックべきではない - それは、潜在的に不安定なマスターブランチを作り、確かにないものでしょう現在生産中です。

答えて

2

私がgit-flow cheat sheetDriessen's original modelで見ていることによると、いくつか間違っています。

git-flowワークフローは自分では使用していませんが、masterはリリースが準備完了時にのみマージされ、前にはマージされません。このように、master常には、プロダクトに含まれるものを反映します。developは、機能ブランチが引き出されてマージされる「メイン」開発ブランチとして機能します。以下のためtopicdevelop

  • 仕事から

    1. 機能ブランチを作成します(私たちはtopicを呼び出すします):だから、成功git-flowワークフローは、このようなもの(特に断りのない限り、これらの枝のすべてが事前に存在すると仮定)を探しますA
    2. あなたは
    3. 新しいブランチを作成してリリースの準備が整うまで、をこのあと数回行いdevelop
    4. に戻すtopicをマージしながら、 (あなたもあなたのようdevelop何度でもにQA-releasenoをしてくださいバックマージすることができます)必要に応じてバグ修正をコミットし、QA-releasenodevelop
    5. ドゥQA/UATからあなたがリリースする準備ができたら、
    6. 、両方masterQA-releasenoをマージそしてdevelopmasterのリリースにタグを付けて、さらにQA-releaseno

    を削除し、何を行っているように見えることはgit-flowChacon's GitHub flowを融合するです。 GitHubの流れは、少なくともその最も単純な形で、このように動作します:topicmaster

  • 作業から(ここではtopicと呼ばれる)新しいトピックブランチオフ

    1. スピン(あなたが長いためにそれに取り組んでいる場合には時間は、戻ってそれにmasterをマージすることは、定期的に良いアイデアです)
    2. ドゥQA topic
    3. のPRがすべての人にコードレビューしtopicからmaster
    4. にプルリクエスト(PR)を消しますさんsatisfcationは、マージtopicバックリリースmaster
    5. masterにすぐに、または少なくともちゃんと迅速

    このワークフローは、高速リリースサイクルに(週に複数回)しているチームや組織のために設計されています。 QAは、アプリケーションレベルではなく、個々の機能、タスク、またはチケットのレベルで行われます。リリースサイクルには即時(または少なくとも速い)フィードバックがあるため、masterは常にプロダクションの内容を反映します。

  • +0

    GitHub Flowではなく、GitFlowを参照していませんか? http://scottchacon.com/2011/08/31/github-flow.html – dotdev

    +0

    @dotdev:OPの「git-flow」とGitHubの流れを混乱させるように見えるので、彼の混乱が私には見えます。私は答えを更新しました。 –

    +0

    "DevReleases"と同じように簡単に "開発"ブランチを持つというコンセプトを導入したので、私は2つのことを混乱させるように思えます。私がこれをGitHub Flowに導入したのは、TeamCityとOctopusを使ってQAにデプロイしたいのであれば、毎回新しい機能ブランチを見るためにTeamCityを更新したくないからです。常に「開発」ブランチからのものでした。 – dotdev

    関連する問題