3 回答

TA貢獻1895條經驗 獲得超3個贊
我懷疑您在這里感到困惑,因為這從根本上來說是令人困惑的。更糟的是,當您進行基準調整時,我們/他們的整個工作切換角色(倒退)。
最終,在期間git merge,“我們的”分支是指您要合并到的分支:
git checkout merge-into-ours
而“他們的”分支是指您要合并的(單個)分支:
git merge from-theirs
這里“我們”和“他們”有一定道理,因為,即使“他們”可能是你的,無論如何,“他們”是不是你是我的唯一的,當你跑了git merge。
雖然使用實際的分支名稱可能很酷,但在更復雜的情況下會分崩離析。例如,代替上面的方法,您可以這樣做:
git checkout ours
git merge 1234567
您通過原始提交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是您要從中合并的版本。
“我們的”和“他們的”概念在此期間rebase被交換的原因是,通過執行一系列的櫻桃操作,將重新建立基礎工作到匿名分支(分離的HEAD模式)。目標分支是匿名分支,而merge-from分支是您的原始(重新設置基準)分支:因此,“-我們的”表示正在建立匿名的一個基準,而“-他們的”表示“正在重新建立我們的分支” 。
至于gitattributes條目:它可能會產生影響:“我們的”實際上是在內部表示“使用階段2”。但是正如您所注意到的,它當時實際上并不存在,因此它應該不會在這里起作用……好吧,除非您在開始之前將其復制到工作樹中,否則不會這樣做。
另外,順便說一句,這適用于我們及其使用的所有使用,但是有些是在整個文件級別上(-s ours對于合并策略;git checkout --ours在合并沖突期間),而有些是逐段的(-X ours或-X theirs在-s recursive合并)。這可能無助于解決任何混亂。
不過,我從來沒有想出一個更好的名字。并且:請參見VonC對另一個問題的回答,其中git mergetool為它們引入了更多名稱,稱它們為“本地”和“遠程”!
- 3 回答
- 0 關注
- 820 瀏覽
添加回答
舉報