3

議論したいシナリオは、開発者がマージの競合を解決するために cd する共有リポジトリであるマージ リポジトリがあることです。

  1. 1 つのファイルに 2 つ以上のマージ競合があります。
  2. 各競合は別のユーザーで解決する必要があります。
  3. 各開発者がこのリポジトリに cd して、マージの競合を解決します。
  4. foo.cに3つのマージ競合があるとしましょう
  5. 1 人のユーザーが foo.c の単一の競合を解決し、グラフィカル マージ ツールに保存します。

現在、GIT はこれを「git add」として認識しますが、ファイルの他の部分にはまだ競合があります。次に、別の開発者が「git mergetool foo.c」を実行しても、競合のために foo.c がポップアップしません。

この問題を解決するグラフィカル ツールはありますか。複数のユーザーが競合を解決して同じファイルに保存できるようにします。

4

1 に答える 1

1

このシナリオは本当に意味がありません...

まず、競合が発生した場合、その競合はまだ存在していない 1 つのマージ コミットにのみ存在します。(それはまだユーザーのマシン上にあり、おそらくインデックスにありますが、ローカルツリーにもありません).

他のユーザーは、マージまたはリベースを行うまで、まったく競合しません。

理由が何であれ、まったく同じマージを行っている 3 人のユーザーがいて、同じ競合が発生しているとします。

さらに、あなたが示唆するように、それぞれが自分たちだけが調整できる競合を抱えていると仮定してみましょう。その場合、それぞれがコードの最新バージョンに基づいて作業をリベースし、プロセス内の競合を調整する必要があります。

言い換えれば、あなたが説明しているように見える状況は次のとおりです: (間違っていたら訂正してください):

  1. Charlie、John、Matt の 3 人の開発者がいて、コミット aaaaaaa にある master ブランチで作業しています。
  2. それらはすべて、「マスター」から分岐したコミット bbbbbbbb にある「不安定な」ブランチでも動作します。
  3. それらはすべて、同時に、'unstable' ブランチを 'master' に個別にマージする必要があると判断します。
  4. 彼らはすべて、同時に、調整できないコミットがあることに気づきます。

理想的には、この状況で行うべきことは、マージの方法を知っている開発者が「不安定」をマージすることです。おそらく、2 つのヘッドを直接マージするのではなく、一度にいくつかのコミットをマージすることを選択するか、全体をリベースすることを選択する可能性があります。

The more frequently this is done, the easier the merge/rebase operation will be.

その後、残りの開発者はマージ コミットを使用できるようになります。

于 2010-12-01T10:21:08.890 に答える