關於主線同分支合併的概念及如何使用的誤區

2021-09-05 20:30:11 字數 1842 閱讀 9421

關於主線同分支合併的概念及如何使用的誤區

此問題是在

netbuddy

的問題上研究而成,走出誤區的過程中得到了

pcplayer

指點迷津。

一、我的合併需求

在主線的第

54個版本上作了分支,在接下來的日子裡,主線和分支同時都有修改,此時需要將分支上的改動合併到主線上,合併前主線和分支都已經提交,截至到合併前,主線的修改達到了版本號

66,而分支的修改達到了

68。主線和分支修改的檔案不同。

二、我最初的錯誤操作

我當時的想法是合併,就是簡單的把主線的最新版本和分支的最新版本合在一起就成了,而且這也是符合我們的手工習慣。於是我就作出了乙個錯誤的操作:

1、在分支的工作副本上單擊右鍵,選擇合併,出現合併對話方塊,在起始路徑和版本號中選擇主線的最新版本,在結束路徑中選擇分支的最新版本,然後單擊合併,合併後,提示框內沒有任何合併的內容。

2、上個操作不成功,於是胡亂進行這個操作,在主線的工作副本上單擊右鍵,選擇合併,出現合併對話方塊,在起始路徑和版本號中選擇分支的最新版本,在結束路徑中選擇主線的最新版本,然後單擊合併,合併後,提示框內沒有任何合併的內容。

3、發現第

2個操作仍沒有結果,更暈,於是進行下面的操作,在主線的工作副本上單擊右鍵,選擇合併,出現合併對話方塊,在起始路徑和版本號中選擇主線的最新版本,在結束路徑中選擇分支的最新版本,然後單擊合併,合併後,提示框內提示有檔案更新,開啟更新的檔案一看,原來是分支上的內容把主線上的工作副本覆蓋了。於是進行下乙個實驗。

4、在分支的工作副本上單擊右鍵,選擇合併,出現合併對話方塊,在起始路徑和版本號中選擇分支的最新版本,在結束路徑中選擇主線的最新版本,然後單擊合併,合併後,提示框內提示有檔案更新,開啟更新的檔案一看,原來是主線上的內容把分支上的覆蓋了。

總結操作問題:合併的起始和結束路徑不是同一路徑,而是主線和分支兩個不同的路徑

三、我把這個問題發到論壇,

pcplayer

指出了我的錯誤,即

「起始選擇主線的最新版本,結束使用分支的最新版本

」,並指明

「應該選擇一條線上的兩個版本,這兩個版本間的改動會以打補丁的形式合併到另外一條線上

」,於是看了一遍

subversion

中文手冊

svnbook1.2

版中第4

章分支與合併,終於理解了合併的使用:

1、如果是需要將主線的改動合併到分支上,需要在分支的工作副本下進行合併,合併的範圍是需要從主線上上次合併的版本到當前主線上最新的版本,如果主線和分支都修改了相同的檔案,合併後會出現衝突,然後解決衝突,如果主線修改但是分支沒有修改,則主線上合併的變更內容會增加到當前副本中,提交,如果是第一次合併,則起始版本號是上次建立分支的版本號

2、相反,如果是需要將分支的改動合併到主線上,需要在主線的工作副本下進行合併,合併的範圍是需要從分支上上次合併的版本到當前分支上最新的版本,合併後會出現衝突(衝突的前提如上種情況),然後解決衝突,提交,如果是第一次合併,則起始版本號是上次建立分支的版本號

3、正確的操作(對應我的需求,將分支上的改動合併到主線上):在主線的工作副本下單擊右鍵,合併,在起始範圍中選擇分支的

54版本,結束範圍中選擇分支的最新版本(當然也可以修改到中間的其他版本,例如

65等),然後單擊合併即可。由於我的需求中主線和分支修改的是不同的檔案,所以不會存在衝突,合併完後直接提交即可。

四、合併的工作是把主線或者分支上合併範圍內的所有改動列出,並對比當前副本的內容,由合併者手工修改衝突。如果當前工作副本是主線的,則合併的範圍是分支上的改動,如果工作副本是分支的,則合併範圍是主線上的改動

囉裡囉唆的寫了一堆,不知道大家能否看明白?呵呵 載自:

關於主線同分支合併的概念及如何使用的誤區

關於主線同分支合併的概念及如何使用的誤區 此問題是在 netbuddy 的問題上研究而成,走出誤區的過程中得到了 pcplayer 指點迷津。一 我的合併需求 在主線的第 54個版本上作了分支,在接下來的日子裡,主線和分支同時都有修改,此時需要將分支上的改動合併到主線上,合併前主線和分支都已經提交,...

git 同分支及不同分支的合併

使用該方式將branch 1中checkout的檔案會直接覆蓋當前分支中同名的檔案!操作需謹慎!git checkout branch 1 test2.py場景描述 對於乙個遠端倉庫test.git,a和bpull了同乙個master分支的最新提交,a修改了內容,率先push到了origin mas...

git 不同分支部分檔案的合併

在專案分支的切換中,經常需要把乙個分支中修改的 合併到master分支中,正常使用merge命令進行自動合併,但當合併的需求為某個分支的某些檔案時,全量合併就不滿足要求了,這時可以使用如下命令 git checkout source branch 支援檔案與目錄方式,如config web 不要採用...