2009-06-26 9 views
12

私が働く会社は毎月のリリースを望んでおり、私は彼らにgitに切り替えるよう説得しようとしています。私は、これを処理する適切なgit-wayは、各リリース(つまり毎月)の統合ブランチを持ち、新しい開発と変更のために統合ブランチから機能ブランチを持つことだと思います。環境には相互依存性があり、他の外部システムからの必要な機能が遅れているため、機能が別の月に延期されることがあります。プロジェクトは一般に2-3の統合部門で並行して活動し、活動はかなり密接な関係にある人々の集団に限定されている。 (これは、最後の統合ブランチにいる限り、リバースを使用できると思うということです)。社内開発のためのgitの使用に関するワークフローの説明

かなりの人が関わっているので、私はブランチ/マージ構造の論理的な説明とこれを行うための実用的なgitコマンドの両方について、これを行う方法の真っ直ぐなガイドラインが本当に必要です。このようなワークフローに合理的に適しているような記述を誰かが知っていますか?

答えて

11

枝の論理的な説明/マージ構造

構造は基本的にあなたが言ったことを、次のとおりです。統合ブランチを、そして枝を備えています。
このようなワークフローでは、すべての開発が次のリリースに移行しないことを理解することが重要です。
DVCSでは、ブランチを公開して複製できることを理解することも重要です。最後の点(出版)がマージに大きな影響、すなわち、 コマンドがあります

  • リベースをマージします。開発者は任意の統合ブランチ上の彼の仕事をマージしているときはいつでも

(彼は「中央」のリポジトリからプル)、私が推薦する:

# switch back to previous release tag (from where feature branches for next release where done) 
$ git checkout previousReleaseTag 
# create one's own private 
$ git checkout -b myIntegrationBranch 
# merge or cherry-pick what we want to actually put in the next release 
$ git merge... from our feature branch 
# rebase that private integration branch on top of actual integration branch 
$ git rebase integrationBranch 

最後のリベースはあなたの地元の歴史を書き換えますブランチでは、とにかく公開しません(害はありません)。
新しい機能がすべて動作したら、そのプライベートブランチを関連する統合ブランチの現在のHEADにマージすることができます。

複数のチームが作業を共通のブランチにマージする必要があるため、「プライベートブランチ - マージまたはチェリーピック - リベース - ローカル解決 - マージバック」が必要なワークフローです。プライベートブランチで公開したいものを共通ブランチにマージする前に再生する必要があります。そうしないと、各チームが共通ブランチのHEADで表されるものを破壊する可能性があります。質問で

その他の詳細:

+0

うーん。開発者が自分のマシンの外に公開された機能を含めたい場合、最後の "git rebase"はそれらのコミットの履歴を書き換えます。すべての機能を公共の統合ブランチ(マスター?)にマージするだけの方がクリーンです。 –

+0

@マリアス:しかし、私が "最後のrebaseはあなたのローカル統合の歴史を書き換えますが、ブランチではとにかく公開しません。 – VonC

関連する問題