亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

git中“我們的”和“他們的”的確切含義是什么?

git中“我們的”和“他們的”的確切含義是什么?

Git
收到一只叮咚 2019-11-21 14:31:41
這聽起來像是一個問題的基本知識,但是我一直在尋找答案,現在我比以前更加困惑。將我的分支合并到另一個分支時,git中的“我們的”和“他們的”是什么意思?兩個分支都是“我們的”。在合并沖突中,“我們的”是否總是顯示兩個版本中的較高者?“我們的”是否總是指合并開始時HEAD指向的分支?如果是這樣,那為什么不使用諸如“當前分支”之類的清晰所有格代詞,而不是使用指稱性模棱兩可的“我們”之類的所有格代詞(因為這兩個分支在技術上都是我們的)?還是只使用分支名稱(而不是說“我們的”,而要說“本地主人的”等)?我最困惑的部分是,如果我在特定分支的.gitattributes文件中指定??梢哉f在測試分支中,我有以下.gitattributes文件:config.xml merge=ours現在我結帳,將HEAD指向master,然后合并到test中。由于master是我們的主人,并且test的.gitattributes未檢出,它甚至會起作用嗎?如果確實有效果,那么既然主人現在是我們的,那將會發生什么?
查看完整描述

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為它們引入了更多名稱,稱它們為“本地”和“遠程”!


查看完整回答
反對 回復 2019-11-21
  • 3 回答
  • 0 關注
  • 820 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號