天天看點

svn merge

svn merge 指令的使用

merge是幹啥的呢?

使用過SVN都知道SVN其實就是一個代碼管理的軟體,使用它可以很好的解決代碼沖突。他可以針對一個檔案産生不同的版本,每一個版本都對應自身的改動。因為它記錄了每一個檔案的修改變化(可以了解為檔案之間的不同點diff),這對于我們的開發,了解有很好的作用。

簡而言之就是你想把某一版改動合到另一個branch上的時候,記住你合過來的改動隻是每版之間的diff!!!!!!!

(1) svn merge url -c xxxx ./ (把svn 版本号為xxxx的改動合到你的本地)

(2) svn merge url -r xxxx:yyyy ./ (将url指定的code的xxxx版本到yyyy版本,merge到本地(注意:該方式不包括xxxx版本!!))

兩個很好用的說明:

(1) 如果你目前要merge的code與你本地操作的code屬于一個branch可以不必指定url啦!!!!

(2) 為了防治merge出錯我們可以在上面指令基礎上添加 --dry-run 來模拟merge的操作也就是寫成:

svn merge url -c xxxx ./ --dry-run

svn merge url -r xxxx:yyyy ./ --dry-run
           

添加--dry-run 隻是模拟實作merge 的行為而不是真正的進行這個動作!!!

merge 動作進行以後會看見各個你merge到本地的檔案前面有 U(表示被更新) A(表示添加) D(表示删除) G(表示存在沖突但已經被解決)

解決産生沖突方法

為何會産生沖突呢??svn 通過diff 來進行存儲,如果你本地的修改和svn 上你merge的修改都在同一行了就會存在沖突,因為他不知道該選擇哪一個啦(svn 懵le )。。。

對于有沖突的檔案我們按照自己的需有三種解決方式:

(1)自行處了解決:

首先選擇:e

然後通過vim打開存在沖突的檔案,輸入 /^===可以找到沖突的位置然後解決沖突,儲存退出,選擇 r 表示該沖突已經被你解決。

(2)選擇svn 上的檔案:

選擇:tc

(3)選擇本地檔案:

選擇:mc

代碼復原

何為代碼復原呢?假設你目前版本是4420 svn commit以後版本變為4221,但是你有後悔了,想把目前的code變回4420 怎麼辦呢?此時你就要用到代碼復原了,對于commit 以後的code使用svn revert 是無濟于事的,此時你就要用到svn merge url -c -4421 ,然後再svn commit 檔案,現在的版本漲到4422 但是和4420 的code的内容是完全一樣的。。。。(為啥呢??因為當你做了svn merge url -c -4421 以後就相當于把4221的改動(diff)又退回到4420了,是以你此時的code和4220就是一樣的啦,你如果再繼續commit現在svn 的code其實就是和4420喽)

作者:hello_new_life這個家夥很笨

來源:CSDN

原文:

https://blog.csdn.net/hello_new_life/article/details/79023003

版權聲明:本文為部落客原創文章,轉載請附上博文連結!