SVN merge(合并) 的三种方式
文章目錄
- 一、合并一個范圍的版本(Merge a range of revisions)
- 二、復興合并(Reintegrate a branch)
- 三、合并兩個不同的樹(Merge two different trees)
- 四、實例
- 五、總結
合并的工作是 把主干或者分支上合并范圍內的所有改動列出,并對比當前工作副本的內容,由合并者手工修改沖突,然后提交到服務器的相應目錄里。如果當前工作副本是主干, 則合并的范圍是分支上的改動,如果工作副本是分支的,則合并范圍是主干上的改動,并且一定要注意,合并的起始位置URL一定要和當前的工作副本的URL是相同的。
一、合并一個范圍的版本(Merge a range of revisions)
此類型應用最為廣泛,主要是把分支中的修改合并到主干上來。在主干上點擊右鍵選擇合并,然后選擇合并類型:合并一個范圍的版本。合并的源URL填寫的是要合并的分支的URL,待合并的版本范圍如果為空,則指的是合并分支上所有的版本,即自從分支創建以來到分支當前最新版本的 所有演變。如果只是選擇其中一個版本,或者幾個版本,那么就表示只是將指定的 n 個版本的變化合并到主干上。如果只是選擇其中一個版本,那么表示只是選擇那 個版本的修改,之前或之后的修改將不被采納。
注:如果將分支的修改合并到主干上,那么這里的源 URL 就是指分支的 URL,目標 URL 就是主干的 URL。
二、復興合并(Reintegrate a branch)
復興合并可以理解為是第一種合并類型的一種特例,在復興合并中,主干可以理解為是自從開創分支之后沒有任何修改,而分支是經過修改的,而且合并中分支是沒 有版本選擇的。經過復興合并,分支中所有的修改都會合并到主干中,合并的結果將使得分支和主干一模一樣,從而可以刪除分支。
三、合并兩個不同的樹(Merge two different trees)
此類型與前兩種類型不同,第一種類型可以選擇分支合并的版本,主干不能選擇版本;第二種類型是主干和分支都不能選擇合并的版本;而這種類型則是無論是主干 還是分支都可以選擇合并的版本,即可以選擇過去的一個主干版本與分支的某個版本進行合并。合并的時候以選擇的分支版本為主,如果選擇的主干版本與分支版本 有不同的地方,合并時主干部分將被放棄。
起始URL:選擇主干目錄的URL(應當和當前工作副本的URL一致,這個是所謂的合并點)
結束URL:選擇要合并的分支的URL。
起始和結束的版本:一般起始版本應當找到最后一次同步時的版本,如果從沒有同步過(第一次合并),則選擇創建分支時的版本,結束版本一般是最新版本,如果你不想將某些內容合并進主干的話,也可以選擇一個合并點。
四、實例
主干A在95版本的時候創建分支B,此時兩棵樹都是95版本
1、我在分支B上增加文件test.txt,提交。此時版本庫升級到了96版本。
2、我在A上選擇合并類型1,合并分支最新版本,結果是把test.txt加入A
3、我在A上選擇合并類型2,合并分支最新版本,結果同上;
4、我在A上選擇合并類型3,合并分支最新版本,結果同上;
5、我在A上增加文件test2.txt,提交,此時版本庫升級到了97版本;
6、我在A上選擇合并類型1,合并分支最新版本,結果是把test.txt加入A;
7、我在A上選擇合并類型2,合并分支最新版本,結果是把test.txt加入A;
8、我在A上選擇合并類型3,主干選擇當前97版本,合并分支最新版本,結果是把test.txt加入A,把test2.txt從A刪除。
9、我在A上選擇合并類型3,主干97以前的版本,合并分支最新版本,結果是把test.txt加入A,而A中保留著test2.txt。
五、總結
將分支合并到主干上,首先需要在主干的工作副本下進行,合并的范圍是從主干的上次合并的版本開始到分支上最新的版本結束,如果是第一次合并,則從主干創建分支的版本開始,所以每次合并要做好說明,在日志中體現,不然忘記了下次再合并就有點麻煩。其實,應當盡量避免一個分支合并多次,分支的作用一般為了解決bug,一旦bug對應結束了,分支的使命就結束了,以后再出現其他的問題,應當重新建立分支,這樣就不會出現多次合并的問題了。
總結
以上是生活随笔為你收集整理的SVN merge(合并) 的三种方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安卓步数修改器(安卓步数修改)
- 下一篇: OGNL 表达式/ValueStack