基本的に混乱しているので、ここで混乱しているのではないかと思います。さらに悪いことに、リベースを実行すると、私たち/彼らのスタッフ全員が役割を切り替えます(逆方向になります)。
最終的に、中にgit merge
、「私たち」の分岐は、あなたがマージしている枝を指しへ:
git checkout merge-into-ours
「theirs」ブランチは、マージする(単一の)ブランチを指します。
git merge from-theirs
ここでは、「ours」と「theirs」はある程度理にかなっています。とにかく「theirs」はおそらくあなたのものですが、「theirs」はあなたが走っていたときのものではありませんgit merge
。
実際のブランチ名を使用するのはかなりクールかもしれませんが、より複雑なケースではバラバラです。たとえば、上記の代わりに、次のようにすることができます。
git checkout ours
git merge 1234567
生のcommit-IDでマージする場所。さらに悪いことに、これを行うこともできます。
git checkout 7777777 # detach HEAD
git merge 1234567 # do a test merge
その場合、関係するブランチ名はありません!
ここでは少し助けになると思いますが、実際には、gitrevisions
構文では、競合するマージ中にインデックス内の個々のパスを番号で参照できます
git show :1:README
git show :2:README
git show :3:README
ステージ#1はファイルの共通の祖先、ステージ#2はターゲットブランチのバージョン、ステージ#3はマージ元のバージョンです。
「ours」と「theirs」の概念が入れ替わる理由はrebase
、一連のチェリーピックをリベースして匿名ブランチ(デタッチされたHEADモード)にリベースするためです。ターゲットブランチは匿名ブランチであり、マージ元ブランチは元の(リベース前の)ブランチです。したがって、「-ours」は匿名の1つのリベースが構築されていることを意味し、「-theirs」は「リベースされるブランチ」を意味します。
gitattributesエントリについては、影響がある可能性があります。「ours」は実際には内部で「ステージ2を使用」を意味します。しかし、お気づきのように、その時点では実際には配置されていないので、ここでは効果がないはずです。
また、途中で、これは我々と彼らのすべての使用に適用されるが、一部はファイル全体のレベルである(-s ours
マージ戦略のため、git checkout --ours
マージ競合の間)と、いくつかは少しずつ基準である(-X ours
または-X theirs
中に-s recursive
マージ)。これはおそらく混乱の助けにはなりません。
ただし、これより良い名前を付けたことはありません。そして:別の質問に対するVonCの回答を参照してください。そこでgit mergetool
は、「ローカル」および「リモート」と呼ばれる、これらの名前のさらに多くの名前が紹介されています!