3 回答

TA貢獻1895條經(jīng)驗 獲得超3個贊
我懷疑您在這里感到困惑,因為這從根本上來說是令人困惑的。更糟的是,當(dāng)您進行基準調(diào)整時,我們/他們的整個工作切換角色(倒退)。
最終,在期間git merge,“我們的”分支是指您要合并到的分支:
git checkout merge-into-ours
而“他們的”分支是指您要合并的(單個)分支:
git merge from-theirs
這里“我們”和“他們”有一定道理,因為,即使“他們”可能是你的,無論如何,“他們”是不是你是我的唯一的,當(dāng)你跑了git merge。
雖然使用實際的分支名稱可能很酷,但在更復(fù)雜的情況下會分崩離析。例如,代替上面的方法,您可以這樣做:
git checkout ours
git merge 1234567
您通過原始提交ID合并的位置。更糟糕的是,您甚至可以執(zhí)行以下操作:
git checkout 7777777 # detach HEAD
git merge 1234567 # do a test merge
在這種情況下,不涉及分支名稱!
我認為這沒有什么幫助,但是實際上,在gitrevisions語法上,您可以在沖突合并期間按數(shù)字引用索引中的單個路徑
git show :1:README
git show :2:README
git show :3:README
階段1是文件的共同祖先,階段2是目標(biāo)分支版本,階段3是您要從中合并的版本。
“我們的”和“他們的”概念在此期間rebase被交換的原因是,通過執(zhí)行一系列的櫻桃操作,將重新建立基礎(chǔ)工作到匿名分支(分離的HEAD模式)。目標(biāo)分支是匿名分支,而merge-from分支是您的原始(重新設(shè)置基準)分支:因此,“-我們的”表示正在建立匿名的一個基準,而“-他們的”表示“正在重新建立我們的分支” 。
至于gitattributes條目:它可能會產(chǎn)生影響:“我們的”實際上是在內(nèi)部表示“使用階段2”。但是正如您所注意到的,它當(dāng)時實際上并不存在,因此它應(yīng)該不會在這里起作用……好吧,除非您在開始之前將其復(fù)制到工作樹中,否則不會這樣做。
另外,順便說一句,這適用于我們及其使用的所有使用,但是有些是在整個文件級別上(-s ours對于合并策略;git checkout --ours在合并沖突期間),而有些是逐段的(-X ours或-X theirs在-s recursive合并)。這可能無助于解決任何混亂。
不過,我從來沒有想出一個更好的名字。并且:請參見VonC對另一個問題的回答,其中g(shù)it mergetool為它們引入了更多名稱,稱它們?yōu)椤氨镜亍焙汀斑h程”!
- 3 回答
- 0 關(guān)注
- 816 瀏覽
添加回答
舉報