Burada kafanız karıştığından şüpheleniyorum çünkü temelde kafa karıştırıcı. İşleri daha da kötüleştirmek için, bir rebase yaparken tüm bizim / onların işleri rolleri değiştirir (geri gider).
Sonuçta, bir sırasında git merge
, "bizimki" dal sen birleştirme ediyoruz dalına atıfta içine :
git checkout merge-into-ours
ve "onların" dalı birleştirdiğiniz (tek) dalı ifade eder:
git merge from-theirs
ve burada "bizimki" ve "onların" "onların" senin zaten muhtemelen, "onların" öyleydin biri olmadığından olsa bazı mantıklı üzerinde kaçtın zaman git merge
.
Gerçek şube adını kullanmak oldukça havalı olsa da, daha karmaşık durumlarda dağılıyor. Örneğin, yukarıdakiler yerine şunları yapabilirsiniz:
git checkout ours
git merge 1234567
burada ham taahhüt kimliği ile birleşiyorsunuz. Daha da kötüsü, bunu bile yapabilirsiniz:
git checkout 7777777 # detach HEAD
git merge 1234567 # do a test merge
bu durumda ilgili şube adı yoktur !
Sanırım burada çok az yardım var, ama aslında, gitrevisions
sözdiziminde , çakışan birleştirme sırasında dizindeki bireysel bir yola numarayla başvurabilirsiniz.
git show :1:README
git show :2:README
git show :3:README
Aşama # 1, dosyaların ortak atasıdır, aşama # 2, hedef şube sürümüdür ve aşama # 3, birleştirdiğiniz sürümdür.
"Bizim" ve "onların" kavramlarının bu sırada takas edilmesinin nedeni, rebase
rebase'in bir dizi kiraz toplaması yaparak anonim bir şubeye (müstakil HEAD modu) çalışmasıdır. Hedef dal, anonim daldır ve birleştirme dalının orijinal (rebase öncesi) dalınızdır: bu nedenle "--ours", anonim bir rebase'in inşa edildiği anlamına gelirken "--theirs", "şubemizin yeniden temellendiği" anlamına gelir .
Gitattributes girişine gelince: bunun bir etkisi olabilir : "bizimki" gerçekten "dahili # 2 kullanımı" anlamına gelir. Ancak belirttiğiniz gibi, aslında o sırada yerinde değildir, bu yüzden burada bir etkisi olmamalıdır ... iyi, başlamadan önce çalışma ağacına kopyalamazsanız değil.
Ayrıca, bu arada, bu bizim ve onların tüm kullanımları için geçerlidir, ancak bazıları bir dosya düzeyinde ( -s ours
birleştirme stratejisi için; git checkout --ours
bir birleştirme çatışması sırasında) ve bazıları parça parça ( -X ours
veya -X theirs
bir -s recursive
birleştirmek). Hangi muhtemelen herhangi bir karışıklık ile yardımcı olmaz.
Yine de bunlar için daha iyi bir isim bulamadım. Ve: VonC'ningit mergetool
bunlara "yerel" ve "uzak" dediği daha fazla isim tanıtan başka bir soruya cevabına bakınız !