2010-12-01 22 views
2

私が議論したいシナリオは です。私は、マージの競合を解決するために開発者がCDを入れる共有リポジトリを持っています。GITのファイルに競合の一部を解決する

  1. 1つのファイルに2つ以上のマージ競合があります。
  2. 各競合は別のユーザーが解決する必要があります。
  3. 各開発者はこのリポジトリに入り、マージ競合を解決します。
  4. はfoo.cのは3マージが
  5. 1ユーザーが今GITがあるものの、「gitの追加」としてこれを認識したfoo.cにおける単一の紛争を解決し、グラフィカルなマージツール

に保存しない競合があるとしましょうファイルの他の部分では依然として競合しています。次に、別の開発者が "git mergetool foo.c"を実行すると、foo.cのポップアップが表示されません。

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

答えて

0

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

まず、その紛争は、唯一のマージがまだ存在しない、コミット上に存在します! (それはまだユーザーのマシン上にありますが、おそらくインデックスにありますが、確かにローカルツリーにもありません)。

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

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

さらに、それぞれが矛盾していても問題が解決できない場合は、最新バージョンのコードに基づいて作業を再構築し、プロセス内の競合を調整する必要があるとします。次のように言い換える

、あなたが記述しているように見える状況は次のとおりです。(私が間違っているなら、私を修正してください):

  1. 我々は、すべての3つの開発者、チャーリー、ジョン、とマットを、持っていますコミットaaaaaaaにあるマスターブランチから作業しています。
  2. これらはすべて、 'master'から分岐したコミットbbbbbbbbにある 'unstable'ブランチでも動作します。
  3. これらはすべて、と同時にで、「不安定な」ブランチを「マスター」にマージする必要があります。
  4. これらはすべてと同時にであり、調整できないコミットがあることを認識しています。

理想的には、この状況では、マージを行う方法を知っている開発者が「不安定」をマージする必要があります。おそらく、2人のヘッドを直接マージするのではなく、一度にいくつかのコミットをマージするか、あるいは何かをリベースすることを選択するかもしれません。

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

残りの開発者は、マージコミットを使用することができます。

+0

これはよく考えられていることではありません。 実際のデータリポジトリのブランチにマージする代わりに、2つのベアリポジトリをマージしようとしています。作業ディレクトリがないので2つの裸のリポジトリをマージすることはできないので、私はmerge_Aと呼ばれる1つのベアレポ(A)からクローンを作成し、2つのベアレポ(B)から変更を引き出すので、merge_Aでマージ競合が発生します。さて、foo.cに3つの衝突する行があり、3人の開発者がmerge_Aにcdして解決しなければならないとしましょう。 –

+0

3人の開発者が自分のリポジトリでマージできない理由はありますか?なぜ彼らは1つの小さな画面の周りに集まり、キーボード上で戦う必要がありますか?あなたが話している争いは、めったに* 1つのファイルにすぎないでしょう。それは、プロジェクトの半分が使用するタイプを争うでしょう! – Arafangion

+0

このプロジェクトは国々に広がっている巨大なプロジェクトなので、このプロジェクトを共有リポジトリ(660)にして、各開発者がこの共有パスに入り、変更を加えます。 –

関連する問題