当社は現在、単純なトランク/リリース/修正プログラムの分岐モデルを使用しており、どの分岐モデルが会社または開発プロセスに最適かについてアドバイスを求めています.
ワークフロー / 分岐モデル
以下は、私が見たこの 3 つの主な説明ですが、部分的に互いに矛盾しているか、その後に遭遇した問題を整理するのに十分ではありません (以下で説明します)。したがって、これまでのところ、私たちのチームはデフォルトでそれほど優れたソリューションではありません。あなたは何か良いことをしていますか?
マージとリベース (絡み合った履歴とシーケンシャルな履歴)
pull --rebase
タスクが完了するまでメインラインへのマージを待つ必要がありますか? 個人的には、タスクがどのベースで開始および終了されたかを視覚的に示すことができるので、マージを好みmerge --no-ff
ます。ただし、他の欠点があります。また、多くの人は、マージの有用な特性、つまり交換可能ではないことに気づいていません(トピック ブランチを master にマージすることは、master をトピック ブランチにマージすることを意味するわけではありません)。自然なワークフローを探している
私たちの手順が単純なルールで特定の状況を捉えていないために、間違いが起こることがあります。たとえば、以前のリリースに必要な修正はもちろん、必要なすべてのブランチにアップストリームをマージできるように、十分にダウンストリームに基づいている必要があります (これらの用語の使用法は十分に明確ですか?)。しかし、開発者がそれをさらに下流に配置する必要があることに気付く前に、修正がマスターに組み込まれることがあり、それが既にプッシュされている場合 (さらに悪いことに、マージまたはそれに基づく何か)、残りのオプションはチェリーピッキングです。それに伴う危険。そのような単純なルールは何を使用しますか?また、これには、他のトピック ブランチを必然的に除外する 1 つのトピック ブランチのぎこちなさが含まれます (それらが共通のベースラインから分岐していると仮定します)。開発者は、書いたばかりのコードがもうそこにないような気がして、別の機能を開始するために機能を終了したくありません。
(cherry-pick による) マージ競合の作成を回避するにはどうすればよいですか?
マージ競合を作成する確実な方法のように見えるのは、ブランチ間でチェリーピックすることです。それらは二度とマージできませんか? どちらかのブランチで同じコミットを元に戻す (これを行う方法は?) を適用すると、この状況が解決する可能性がありますか? これが、私が大部分のマージ ベースのワークフローを推奨しない理由の 1 つです。
トピックの枝に分解する方法は?
トピック ブランチから完成した統合を組み立てることは素晴らしいことだと認識していますが、多くの場合、開発者による作業は明確に定義されておらず (「突っついている」だけの場合もあります)、一部のコードが既に「その他」のトピックに含まれている場合は、上記の質問によると、そこから再び持ち出すことはできませんか? トピックブランチの定義/承認/卒業/リリースにどのように取り組んでいますか?
もちろん、コードのレビューや卒業などの適切な手順は素晴らしいものです。
しかし、これを管理するのに十分なほど複雑にならないようにすることはできません - 何か提案はありますか? 統合ブランチ、イラスト?
以下は、関連する質問のリストです。
- デプロイされたアプリケーションをホットフィックス可能にするための優れた戦略は何ですか?
- 自社開発でのGit活用の流れ解説
- 企業向け Linux カーネル開発の Git ワークフロー
- 開発コードと製品コードをどのように維持していますか? (このPDFをありがとう!)
- git リリース管理
- Git チェリーピック vs マージ ワークフロー
- 複数のコミットをチェリーピックする方法
- 選択したファイルを git-merge でマージするにはどうすればよいですか?
- コミットの範囲をチェリーピックして別のブランチにマージする方法
- ReinH Git ワークフロー
- 元に戻すことのない変更を行うための git ワークフロー
- マージをチェリーピック
- OSとプライベートコードを組み合わせた適切なGitワークフロー?
- Git でプロジェクトを維持する
- Git が変更された親/マスターとファイルの変更をマージできないのはなぜですか。
- Git ブランチ / リベースのグッド プラクティス
- 「git pull --rebase」で問題が発生するのはいつですか?
- 大規模なチームで DVCS はどのように使用されますか?
また、Plastic SCM がタスク駆動型開発について書いていることも確認してください。Plastic を選択しない場合は、nvie の分岐モデルとサポート スクリプトを調べてください。