4

SVN に苦労した私は、GIT をチェックするように言われました。ブランチは、私が達成しようとしているワークフローにとって理想的だからです。私は混乱してきましたが、GIT の基本が整理されたと思います。

私たちは基本的に、一部のクライアントが使用する中央フレームワークを持っています。トランク/マスターを持ち、ブランチを通常どおりに使用して、開発/試行用に使用したいのですが、クライアントごとにブランチを作成したいので、コードに対するクライアント固有の変更に取り組みます。これらのブランチは常にブランチであり、最終的にトランク/マスターにマージされることはありません。

私が達成しようとしている主なことは、トランク/マスターからさまざまなクライアントブランチへのすべての変更を簡単にマージできるようにすることです。マージまたはリベースが必要かどうかで混乱しています。

だから私の質問...これには常にリベースを使用する必要がありますか?もしそうなら、なぜですか? (各ブランチで個々のコミットを保持したいので?)

編集だから私はレポを作成し、そのレポでfile.phpと言う$x = 1

  • 私はそれをマスターにコミットします
  • client1というブランチを作成します
  • client1で、新しいファイルを追加してコミットします
  • client1でfile.phpを変更するので$x = 2

マージ前の git ログ

  • マスターで file.php に変更を加えましたが、新しい行であり、$x はそのままです$x = 1
  • client1でマスターをマージし、競合が発生します$x

$x競合を引き起こしていることに隣接する file.php に新しい行を追加しているためですか?

4

1 に答える 1

2

マージする必要があります。リベースは、ブランチがマスターから分岐したため、マスターのすべての変更を取得し、ブランチの上にそれらを再作成します。これは、マスターの各コミットが、追跡しているすべてのクライアント ブランチに対して複製されることを意味します。

マージは意味的にあなたがしていることです。結果として得られるコミット グラフは見栄えがよくなり、Git はマージをより簡単に実行できます。各マージの後、master の履歴がブランチ自体の履歴の一部になるためです。master のすべてのコミットを再検討する代わりに、最後のマージ。

于 2013-04-10T14:17:35.233 に答える