2011-08-24 11 views
4

までの私の地元の支店を維持します。私はいつもマスターが最新であることを確かめることができます。なぜなら、それは覚えやすいからです。それは私のSVNの考え方がまだ残っていると思います。どのように私は私のリポジトリにいくつかの支店を持っていると私は時間をかけて、それが最新でそれらすべてを維持することはより困難になってきていますことを発見していた日付

  • マスター
    • bugfix1
    • bugfix2
    • newfeature
      • 実験

私の問題のIこのようなもの。私はbugfix2ブランチを変更します。私は自分のコミットを済ませたらマスターに変更をマージしますが、それ以外のいくつかのブランチがあります。 bugfix2を手作業で他のすべてのブランチにマージする必要があります。私のブランチリストが成長するにつれて、これらのマージ操作をすべて実行することは非現実的だと思います。

コマンドは、このためにあるのか、私のワークフローが間違っていますか?

答えて

2

一般的なワークフローは、以下の特定のブランチに最も特定のブランチからマージすることです。
しかしa bug needed to be reported to all other branchesのために、他の支店への単純なマージが十分にあると(でもエイリアス)スクリプトすることができます。

for i in $branches; do 
    git checkout $i 
    git merge bugfix2 
done 
+0

これは多少自動化されています。ちょうど座っていないものがあります。しかし、役に立つ解決策、私は当面これに固執するでしょう。 –

+0

@Vince:通常、どのような種類の「正しくない」とは、ブランチ間の関係がないことです(どのブランチからどのブランチにマージするかわからない)。良いブランチ命名規則が役立ちます。 – VonC

-1

私の提案のワークフローは、マスターが先に行くと、マスターにあなたのバグ修正のブランチをリベースすることです。だからあなたの歴史は清潔であり、それほど多くのマージコミットは含まれていません。

+1

良いことではありません。バグ修正は特定のコードベース状態で行われ、マスタ上でそれを再配置すると「フローティングコミット」となり、適用時の知識が失われます。他のブランチでより良くマージする – CharlesB

+0

バグ修正のブランチの場合は正しいです。フィーチャーブランチの場合、彼の例のnewfeatureブランチのように、私のワークフローがより良い選択肢になります。そして、バグフィックスブランチがマージされると、それを再構築することを意味しませんでした。しかし、バグフィックスブランチ(まだマージされていない)で作業していて、マスターの現在の変更が必要な場合は、なぜリベースするべきではありませんか? bugfixブランチが開始されたときの情報は、本当に必要なのでしょうか? – dunni

+0

機能ブランチのリベースはOKです。バグ修正については、正しい状態を知ることが重要です。また、それらを再設定すると、他のバグが発生する可能性があるため、より複雑な履歴が得られます。 – CharlesB

1

私のアドバイスは、あなたが現在取り組んでいるものは何でもブランチに必要な、そしてあなたがそれらに取り組む次回まで、最新の残りの部分を維持する心配はありません。何でもマージすることです。私がgitをローカルで使用する理由の1つは、私の会社の集中型VCSの上にブランチを少し古いものにすることができるということです。再現するのが難しいバグは、報告された正確なバージョンと照合することができます。新しいフィーチャーは、別の修正を適用するために問題を引き起こした変更であったのか、それとも今更新したばかりのアップデートであるのか不思議に思うことなくデバッグすることができます。是非、あなたの枝をmasterから遠く離れて広げてはいけませんが、念のため常に最新の状態に保つことについては宗教的ではありません。個々のブランチに最適なタイミングでそれらを更新してください。

関連する問題

 関連する問題