2016-12-14 24 views
1

gitサブモジュールを使用するプロジェクトでブランチをマージしようとしています。通常、紛争が発生した場合、2つの変更点があります。競合を解決することは、これらの2つを1つに統合することです。 ?しかし、私はGitのサブモジュールのためのdiffが3番目の値を示していることに気づいた:「 - 」、「 - 」サブモジュールをマージするときの3つのコミット参照

diff --cc my_submodule 
index dd7404e,e6753b1..0000000 
--- a/my_submodule 
+++ b/my_submodule 
@@@ -1,1 -1,1 +1,1 @@@ 
- Subproject commit dd7404e5f35ee0b0064f0d6ed8201cc39d6ed6b2 
-Subproject commit e6753b1142cf0350608720ff23f7ecf51b813cd9 
++Subproject commit 3b4e75fbb7c55cf21e19509bbbbfabfa1fc10630 

何をすると「++」を意味し、それが可能だと

注意をそのサブモジュールのバージョンマージは、彼らも私たちでもなかったの前に実際には3つのハッシュを説明するだろう、リポジトリにチェックアウト?

答えて

1

これは単に、サブモジュールgitlinkが(special entry in the index of the parent repo)送信元と送信先に両方を変更しました。意味します (git diff man pageを参照)

++が追加された1行がGit Tools - Advanced Mergingから支社やBRANCH2

のいずれかに表示されないことを意味:

あなたは競合が原因で3 SHA1を持って、Gitの店これらのすべて索引の「段階」の下にあるバージョンで、それぞれに番号が関連付けられています。

  • ステージ1は、ステージ2は、あなたのバージョンであり、
  • ステージ3はあなたがマージしているMERGE_HEAD、バージョン(「彼ら」)からである
  • 、共通の祖先です。

    git diff-files -c(マージされたファイルの合計差分)で示される

    が、それは作業ツリーファイル

    を持つ2人の未解決のマージ両親を比較:

combined diff formatセクションでは、すべての詳細を持っていますすなわち

  • file1
  • file2は "彼らのバージョン" 別名ステージ3で、 "私たちのバージョン" 別名ステージ2です。列N

-文字列がfileNに表示されていることを意味しますが、結果には表示されません。列N
+文字列は「その行を持っていない結果に表示され、fileNことを意味し、あなたの場合は

:最初の列手段で

  • -file1、「私たち」のバージョンを意味するステージ2を意味します。
  • 第2列の-は、file2であり、ステージ3は「それらの」を意味する。
  • A「++」は、それがソースで変更されたことは何を意味file1又は2にした添加(ステージ1から共通の祖先と比較した各時間)
+0

を意味?何に比べて?ローカル変更? SHA1が私たちの " - "か " - "というこの特定の例では、 – Amiramix

+0

@Amiramixは共通の祖先と比較しています。 – VonC

+0

@Amiramix https://git-scm.com/docs/git-diff#_combined_diff_formatを参照してください: 'git diff-files -c'(マージされたファイルの差分を組み合わせたもの)で表示されると、2つの未解決のマージ・ペアレントを作業用ツリーファイル(つまり、file1はステージ2とも呼ばれ、file2はステージ3とも呼ばれます)。 – VonC

関連する問題