web-dev-qa-db-ja.com

KDIFFマージのA、B、およびCとは

コードと他の誰かのコードをマージするときに、3つの選択肢が与えられるのはなぜですか?私のコード、他の人のコード、および以下の出力だけがあるべきではありませんか? KDIFFのドキュメントは理解に役立ちません。

71

-way merge を実行しているように聞こえるので、AはBとCのベースとなるベースリビジョンである必要があり、Bはそのリビジョンであり、Cはあなたのものです(私は信じています; BとCは反対))。

32
eldarerathis

[〜#〜] a [〜#〜]は、マージターゲットのベースとなるバージョンを指します。ブランチからトランクにマージする場合、「A」が以前のトランクバージョンになります。

[〜#〜] b [〜#〜]は、ローカルの変更を含め、現在ローカルトランクフォルダーにあるものです。

[〜#〜] c [〜#〜]は、Bの上にマージするバージョンです。

69
Th 00 mÄ s

AはBとCを子として持つ親リビジョン
Bがser1/repo1によってAに行われた変更を含み、CがAの変更を含むが、他のユーザーによる変更を含むことを意味します(ser2/repo2

kdiffは、bまたはcから変更を選択する(または両方を取る)か、または親からも 'A'を選択するオプションを提供します

11
RollerCosta

A(BASE)->現在リモートリポジトリにある元のファイル。
B(ローカル)->ファイル。これは、Aと比較した変更のみを表示します。
C(リモート)->ファイル。これは、Aと比較した場合の変更のみを示しています。

変更が異なるコード行にある場合、BとCの両方から取得します。変更が同じコード行にある場合(競合)、BまたはCから取得します。

10
Nikhil Vartak

git rebase、私の観察は次のとおりでした:C-my_branchの内容はローカル(つまり、リベースが開始されて競合が発生する前にエディターで表示されました)。 B-私がリベースしていたブランチmy_branchの上(たとえばマスターブランチ)A-B&Cのベースリビジョン(この場合はあまり気にしませんでした)

3
Aleks Tkachenko