SVN使用總結

執法丶大隊發表於2020-04-06

TortoiseSVN客戶端

TortoiseSVN 是 Subversion 版本控制系統的一個免費開源客戶端,可以超越時間的管理檔案和目錄。檔案儲存在中央版本庫,除了能記住檔案和目錄的每次修改以外,版本庫非常像普通的檔案伺服器。你可以將檔案恢復到過去的版本,並且可以通過檢查歷史知道資料做了哪些修改,誰做的修改。這就是為什麼許多人將 Subversion 和版本控制系統看作一種“時間機器”。

一、客戶端TortoiseSVN的安裝

執行TortoiseSVN程式,點選Next,下面的截圖順序即為安裝步驟:

1、


2、


3、


4、



二、客戶端TortoiseSVN的使用方法

1、簽入原始碼到SVN伺服器

假如我們使用IDE工具在資料夾StartKit中建立了一個專案,我們要把這個專案的原始碼簽入到SVNServer上的程式碼庫中裡,首先右鍵點選StartKit資料夾,這時候的右鍵選單如下圖所示:


點選Import,彈出下面的窗體,
其中http://zt.net.henu.edu.cn是伺服器名,svn是程式碼倉庫的根目錄,
StartKit是我們在上個教程中新增的一個程式碼庫。
說明:左下角的CheckBox,在第一次簽入原始碼時沒有用,但是,在以後你提交程式碼的時候是非常有用的。


點選OK按鈕,會彈出下面的窗體,要求輸入憑據:


在上面的窗體中輸入使用者名稱和密碼,點選OK按鈕:


如上圖所示,好了,原始碼已經成功簽入SVN伺服器了。
這時候團隊成員就可以遷出SVN伺服器上的原始碼到自己的機器了。

2、簽出原始碼到本機

在本機建立資料夾StartKit,右鍵點選Checkout,


彈出如下圖的窗體:


在上圖中URL of Repository:下的文字框中輸入svn server中的程式碼庫的地址,其他預設,
點選OK按鈕,就開始簽出原始碼了。

說明:上圖中的Checkout Depth,有4個選項,
          分別是遷出全部、
          只簽出下一級子目錄和檔案、
          只簽出檔案、
          只簽出空專案,預設的是第一項。
上面的例子中,我們也可以使用web的方式訪問程式碼庫,
在瀏覽器中輸入http://zt.net.henu.edu.cn/svn/StartKit/
這時候也會彈出對話方塊,要求輸入使用者名稱和密碼,通過驗證後即可瀏覽程式碼庫中的內容。
搞定!原始碼已經成功簽出到剛才新建的StartKit目錄中。


開啟StartKit目錄,可以看到如下圖的資料夾結構:


一旦你對檔案或資料夾做了任何修改,那麼檔案或資料夾的顯示圖片機會發生變化。


不同狀態所對應的圖片:


我們已經知道怎麼將原始碼檢出到SVN伺服器,怎麼從伺服器簽出程式碼到本機,也簡單瞭解了不同狀態所對應的圖案啦。

詳細說明幾個常用圖示


3、提交修改過的檔案到SVN伺服器

上面的圖修改了位於Model檔案中的二個檔案ImageInfo.cs和NewsInfo.cs,下面演示如何提交到SVN伺服器。
注意:提交原始碼到伺服器時,一定確保本機的程式碼是最新版本,否則可能提交失敗,或者造成版本衝突。


在Model資料夾上點選右鍵或在Model檔案下的空白處點選右鍵,點選SVN Commit…彈出下面的窗體:


點選OK按鈕後,彈出如下圖的窗體:


4、新增新檔案到SVN伺服器

我們在Model檔案下新增一個新的類檔案UserInfo.cs,
方式一,在Model檔案下的空白處點選右鍵,點選SVN Commit…,和上面講的提交修改過的檔案到SVN伺服器一樣,就可以了。
方式二,另外也可以在檔案UserInfo.cs上點選右鍵,點選TortoiseSVN=>>Add,先提到變更列表中,彈出如下圖的窗體:


選中UserInfo.cs檔案,點選OK按鈕,這樣並沒有將這個檔案提交到SVN伺服器,只是將這個檔案標記為原始碼庫庫中的檔案,並將其狀態置為修改狀態。
之後,我們要再SVN Commit這個檔案一次,才可以將其真正提交到SVN伺服器上的程式碼庫中。
上面講是新增檔案,實際上,新增資料夾的步驟也是一樣的,這裡就不說了。

5、刪除(Delete)


如果被刪除的檔案還未入版本庫,則可以直接使用作業系統的刪除操作刪除該檔案。
如果被刪除的檔案已入版本庫,則刪除的方法如下:
選擇被刪除檔案,右鍵svn選單執行”delete”操作,然後選擇被刪除檔案的父目錄,右鍵svn選單執行”SVN Commit”.
使用作業系統的刪除操作刪除該檔案,然後選擇被刪除檔案的父目錄,右鍵svn選單執行”SVN Commit”,在變更列表中選擇被刪除的檔案。如下圖:


總結就是:選擇要刪除的檔案,點選Delete,再把刪除操作提交到伺服器 。

6、重新命名檔案或資料夾,並將修改提交到SVN伺服器


只要在需要重新命名的檔案或資料夾上點選右鍵,點選TortiseSVN=>>Rename…,在彈出的窗體中輸入新名稱,點選OK按鈕,就可以了。此方法也不是直接重新命名,而是將該檔案或資料夾的名稱標記為重新命名後名稱,也需要我們使用SVN Commit提交到SVN伺服器後才真正重新命名。

7、SVN還原(SVN Revert)

右擊想要回退的檔案或者資料夾,在TortoiseSVN彈出選單中選擇”Update to reversion…”然後會彈出一個視窗,如下:


比如說我們要回退到第10個版本只需要在Revision中填寫相應的版本號,然後點選ok即可。

8、更新操作(將SVN伺服器中所有版本變化更新到本地)

對於其他使用者(指不是提交變化的使用者),可執行SVN update命令完成將SVN伺服器發生版本變化的檔案更新到本地。


通常我們(記住每個人就是SVN的本地客戶)在工作時,會不斷執行SVN Update命令以獲取SVN伺服器中最新的檔案,從而獲得其他人的變更。
通常我們每天早上來的時候要更新一下程式碼,保證自己的程式碼版本是最新的,還有就是,在提交程式碼之前,要更新一下程式碼,減少版本衝突的機率。

9、顯示日誌(Show log)

通過此功能可以查到誰,什麼時候,對那個目錄下的那些檔案進行了那些操作。


10、版本庫瀏覽(Repo-browser)

此功能是用來瀏覽需要檢視的資料庫,在本地資料夾下點選右鍵,選擇TortoiseSVNàRepo-browser,在彈出的對話方塊中輸入資料庫地址,再輸入使用者名稱和密碼,就能檢視到你需要檢視到版本庫的內容,在這你還能看到那些檔案被誰鎖定了。


11、如何解決衝突檔案


產生衝突的原因

為什麼會產生衝突程式碼呢?原因很簡單就是因為不同的人,同時修改了同一個檔案的同一個地方,這時候,他提交了,我沒有提交,我就提交不了,這個時候我們要進行先更新,然後在進行提交即可,那如果產生衝突,會生成如下3個檔案。

對於每個衝突的檔案Subversion在你的目錄下放置了三個檔案:如下:


原檔案的圖示變為表示內容含有衝突
  1.txt.mine(格式:衝突檔名.副檔名.mine)記錄了你的檔名內容
  1.txt.r4(格式:衝突檔名.副檔名.r版本號)記錄了當前版本的上一個版本內容
  1.txt.r5(格式:衝突檔名.副檔名.r版本號)記錄了當前版本的內容

接下來就是如何解決檔案中的衝突,你可以選擇以下方式解決衝突。


解決方法

解決方案如下:

首先我們可以看下1.txt程式碼如下:

[java] view plain copy
  1. <<<<<<< .mine  
  2. aaaasdf11222333 dderderder  
  3. =======  
[java] view plain copy
  1. <pre name="code" class="java" style="font-size: 18px;">aaaasdf11222333 444444444  
b>>>>>>> .r5


然後我去掉多餘的程式碼,1.txt變成這樣aaaasdf11222333 dderderder進行提交,還是提交不了,如下所示:

為什麼?因為衝突會產生上面的三個檔案,有上面3個檔案存在肯定提交不了,這三個檔案程式碼及解釋如下:(1)1.txt.mine是衝突前自己的檔案。可以看下內容如下:aaaasdf11222333 dderderder(2)1.txt.r4是衝突前本地的版本檔案,內容如下:aaaasdf11222333(3)1.txt.r5是別人趕在你之前提交的版本

繼續解決:內容說明

<<<<<.mine到 >>>>>.r5之間的就是衝突的部分,======之前的是你的內容,=====之後的是當前版本的內容可根據情況進行取捨,然後刪除註釋符號並刪除新增的新增了三個檔案,然後再提交就OK了!

方式一(這種方法可以用,但是不好用)

使用revert(回滾)操作,該操作表示使用者放棄自己的更新程式碼,然後直接提交,這個時候你的程式碼就會使伺服器上最新的程式碼,即A使用者提交的新程式碼,你的程式碼不會被提交,如下所示:

點選ok按鈕後可以看到其他三個檔案都自動刪掉了,1.txt程式碼變成如下程式碼:

[java] view plain copy
  1. aaaasdf11222333 444444444  
也就是a使用者提交的程式碼,我自己更新的程式碼需要自己動手複製進去即可提交commit。

方式二(推薦)

假如我現在3.txt產生衝突程式碼如下:

[java] view plain copy
  1. <<<<<<< .mine  
  2. 333333338888888888888  
  3. =======  
  4. 3333cccccccccc3333  
  5. >>>>>>> .r16  

通過第一點我們知道,333333338888888888888這個內容是我修改後,未產生衝突之前的內容,3333cccccccccc3333這個程式碼是A使用者提交的程式碼,從上面得知A使用者新增內容是ccccccc,而我新增的內容是8888888。
那麼第二種解決方法如下:
選擇檔案->右鍵Editconficts:這種方法需要衝突雙方經過協商之後將程式碼更改統一之後再提交。不僅解決了衝突而且還保證了程式碼是正確的,因為只有一方的程式碼被提交.


如上圖所示,紅色的部分是衝突程式碼:theirs表示當前伺服器端最新的程式碼,Mine表示自己修改後的程式碼,Merged表示合併後的程式碼。點選紅色後右鍵選擇:use this text block就可以將該部分程式碼作為合併後的程式碼。
接下來再說說由於衝突導致重要程式碼被覆蓋的情況。衝突發生時如果採取的措施不對可能會導致部分程式碼丟失,如果想要還原之前的程式碼也很容易。
選擇檔案->右鍵選擇show log在這裡面你可以看見之前提交的所有版本,找到你想要恢復的版本右鍵選擇revert to this version就可以恢復了.


繼續深入解釋方式二的操作步驟




單擊儲存會看到新增的三個檔案已自動被刪除(如果仍存在手動刪除即可),這時再執行SVN Commit也OK了!


三、SVN客戶端各選單作用及常見符號

1、SVN客戶端選單作用

把SVN的所用功能及用法進行羅列

01、SVN Checkout(SVN取出)

點選SVN Checkout,彈出檢出提示框,在URL of repository輸入框中輸入伺服器倉庫地址,在Checkout directory輸入框中輸入本地工作拷貝的路徑,點選確定,即可檢出伺服器上的配置庫。

02、SVN Update(SVN更新)
如果配置庫在本地已有工作拷貝,則取得最新版本只是執行SVN Update即可,點選SVN Update,系統彈出更新提示框,點選確定,則把伺服器是最新版本更新下來。

03、Import(匯入)
選擇要提交到伺服器的目錄,右鍵選擇TortoiseSVN----Import,系統彈出匯入提示框,在URL of repository輸入框中輸入伺服器倉庫地址,在Import Message輸入框中輸入匯入日誌資訊,點選確定,則檔案匯入到伺服器倉庫中。

04、Add(加入)
如果有多個檔案及資料夾要提交到伺服器,我們可以先把這些要提交的檔案加入到提交列表中,要執行提交操作,一次性把所有檔案提交,如圖,可以選擇要提交的檔案,然後點選執行提交(SVN Commit),即可把所有檔案一次性提交到伺服器上

05、Resolving Conflicts(解決衝突)
有時你從檔案庫更新檔案會有衝突。衝突產生於兩人都修改檔案的某一部分。解決衝突只能靠人而不是機器。當產生衝突時,你應該開啟衝突的檔案,查詢以<<<<<<<開始的行。衝突部分被標記:
<<<<<<< filename
your changes
=======
code merged from repository
>>>>>>> revision
Subversion為每個衝突檔案產生三個附加檔案:
filename.ext.mine
更新前的本地檔案。
filename.ext.rOLDREV
你作改動的基礎版本。
filename.ext.rNEWREV
更新時從檔案庫得到的最新版本。
使用快捷選單的編輯衝突Edit Conflict命令來解決衝突。然後從快捷選單中執行已解決Resolved命令,將改動送交到檔案庫。請注意,解決命令並不解決衝突,而僅僅是刪除filename.ext.mineandfilename.ext.r*檔案並允許你送交。

06、Check for Modifications(檢查更新)
點選Check for Modifications,系統列表所以待更新的檔案及資料夾的狀態。

07、Revision Graph(版本分支圖)
檢視檔案的分支,版本結構,可以點選Revision Graph,系統以圖形化形式顯示版本分支。

08、Rename(改名)
SVN支援檔案改名,點選Rename,彈出檔名稱輸入框,輸入新的檔名稱,點選確定,再把修改提交,即可完成檔案改名。

09、Delete(刪除)
SVN支援檔案刪除,而且操作簡單,方便,選擇要刪除的檔案,點選Delete,再把刪除操作提交到伺服器。

10、Moving(移動)
選擇待移動的檔案和資料夾;按住右鍵拖動right-drag檔案(夾)到跟蹤拷貝內的新地方;鬆開左鍵;在彈出選單中選擇move files in Subversion to here

11、Revert(還原)
還原操作,如剛才對檔案做了刪除操作,現在把它還原回來,點選刪除後,再點選提交,會出現如上的提示框,點選刪除後,再點選Revert,即已撤銷刪除操作,如果這時候點選提交,則系統彈出提示框:沒有檔案被修改或增加,不能提交。

12、Branch/Tag(分支/標記)
當需要建立分支,點選Branch/Tag,在彈出的提示框中,輸入分支檔名,輸入日誌資訊,點選確定,分支建立成功,然後可檢視檔案的版本分支情況。

13、Switch(切換)
檔案建立分支後,你可以選擇在主幹工作,還是在分支工作,這時候你可以通過Switch來切換。

14、Merge(合併)
主幹和分支的版本進行合併,在源和目的各輸入檔案的路徑,版本號,點選確定。系統即對檔案進行合併,如果存在衝突,請參考衝突解決。

15、Export(匯出)
把整個工作拷貝匯出到本地目錄下,匯出的檔案將不帶svn檔案標誌,檔案及資料夾沒有綠色的”√”符號標誌。

16、Relocate(重新定位)
當伺服器上的檔案庫目錄已經改變,我們可以把工作拷貝重新定位,在To URL輸入框中輸入新的地址。

17、Add to Ignore List(新增到忽略列表)
大多數專案會有一些檔案(夾)不需要版本控制,如編譯產生的*.obj, *.lst,等。每次送交,TortoiseSVN提示那些檔案不需要控制,挺煩的。這時候可以把這些檔案加入忽略列表。

18、SVN其它相關功能
客戶端修改使用者密碼:
開啟瀏覽器,在位址列內輸入http://192.168.1.250/cgi-bin/ChangePasswd,啟動客戶端修改使用者密碼的介面,輸入正確的使用者名稱,舊密碼,新密碼(注意密碼的位數應該不小於6,儘量使用安全的密碼),點選修改即可。

19、SVN Commit(版本提交)
把自己工作拷貝所做的修改提交到版本庫中,這樣別人在獲取最新版本(Update)的時候就可以看到你的修改了。

20、Show log(顯示日誌)
顯示當前檔案(夾)的所有修改歷史。SVN支援檔案以及資料夾獨立的版本追溯。

21、Repo-Browser(檢視當前版本庫)
檢視當前版本庫,這是TortoiseSVN檢視版本庫的入口,通過這個選單項,我們就可以進入配置庫的資源管理器,然後就可以對配置庫的資料夾進行各種管理,相當於我們開啟我的電腦進行檔案管理一樣。

22、Revision Graph(版本圖形)
檢視當前專案或檔案的修訂歷史圖示。如果專案比較大型的話,一般會建多個分支,並且多個里程碑(穩定版本釋出),通過這裡,我們就可以看到專案的全貌。

23、Resolved(解決衝突)
如果當前工作拷貝和版本庫上的有衝突,不能自動合併到一起,那麼當你提交修改的時候,tortoisesvn就會提示你存在衝突,這時候你就可以通過這個選單項來解決衝突。衝突的解決有兩種,一種是保留某一份拷貝,例如使用配置庫覆蓋當前工作拷貝,或者反過來。還有一種是手動解決衝突,對於文字檔案,可以使用tortoiseSVN自帶的工具,它會列出存在衝突的地方,然後你就可以和提交者討論怎麼解決這個衝突。同時它也對Word有很好的支援。

24、Update to Revision(更新至版本)
從版本庫中獲取某一個歷史版本。這個功能主要是方便檢視歷史版本用,而不是回滾版本。注意:獲取下來之後,對這個檔案不建議進行任何操作。如果你做了修改,那麼當你提交的時候SVN會提示你,當前版本已失效(即不是最新版本),無法提交,需要先update一下。這樣你所做的修改也就白費了。

25、Revert(回滾)
如果你對工作拷貝做了一些修改,但是你又不想要了,那麼你可以使用這個選項把所做的修改撤銷。

26、Cleanup(清除狀態)
如果當前工作拷貝有任何問題的話,可以使用這個選項進行修正。例如,有些檔案原來是版本控制的,但是你沒有通過tortoiseSVN就直接刪除了,但是tortoiseSVN還是保留著原來的資訊(每個資料夾下都有一個.svn的隱藏資料夾,存放著當前資料夾下所有資料夾的版本資訊)所以這就會產生一些衝突。可以使用cleanup來清理一下。

27、GetLock/ReleaseLock(加鎖/解鎖)
如果你不想別人修改某個檔案的話,那麼你就可以把這個檔案進行加鎖,這樣可以保證只有你對這個檔案有修改權。除非你釋放了鎖,否則別人不可能提交任何修改到配置庫中。

28、Branch/tag(分支/標籤)
Branch是分支的意思。例如當在設計一個東西的時候,不同的人有不同的實現,但是沒有經過實踐檢驗,誰也不想直接覆蓋掉其他人的設計,所以可以引出不同的分支。將來如果需要,可以將這些分支進行合併。
tag是打標籤的意思。通常當專案開發到一定程度,已經可以穩定執行的時候,可以對其打上一個標籤,作為穩定版。將來可以方便的找到某個特定的版本(當然我們也可以使用版本號來查詢,但是數字畢竟不方便)
SVN對於分支和標籤都是採用類似Linux下硬連結的方式(同一個檔案可以存在兩個地方,刪除一個不會影響另一個,所做修改會影響另一個),來管理檔案的,而不是簡單的複製一份檔案的拷貝,所以不會有浪費儲存空間的問題存在。

29、Export(匯出)
這個功能是方便我們部署用。當我們需要釋出一個穩定版本時,就可以使用這個功能將整個工程匯出到某個資料夾,新的資料夾將不會包含任何版本資訊了。

30、Relocate(版本庫轉移)
當我們版本庫發生轉移的時候就需要用到這個功能了。例如我原先的版本庫是建在U盤上的,現在轉移到(複製整個配置庫資料夾)開發伺服器上,使用https代替檔案系統的訪問。因此就需要將原來的工作拷貝的目標版本庫重新定位到開發伺服器上。

31、create patch(建立補丁)
建立補丁。如果管理員不想讓任何人都隨便提交修改,而是都要經過稽核才能做出修改,那麼其他人就可以通過建立補丁的方式,把修改資訊(補丁檔案)傳送給管理員,管理員稽核通過之後就可以使用apply patch提交這次修改了。

32、diff(比較修改部分)
如果你修改了一個檔案,又不確定改了那些地方,這時你可以在相應檔案上點右鍵,選擇diff檢視,與伺服器上最新版的差異

2、svn常見符號


黃色感嘆號(有衝突):
--這是有衝突了,衝突就是說你對某個檔案進行了修改,別人也對這個檔案進行了修改,別人搶在你提交之前先提交了,這時你再提交就會被提示發生衝突,而不允許你提交,防止你的提交覆蓋了別人的修改。要解決衝突,如果你確認你的修改是無效的,則用TSVN還原你的修改就行了;如果認為你的修改是正確的,別人的提交是無效的,那麼用TSVN先標記為“解決衝突”,然後就可以提交了;如果你認為你的修改和別人的修改都有一部分是有效的,那麼你就把別人的修改手動合併到你的修改中,然後使用TSVN標註為“解決衝突”,然後就可以提交了。進入資料夾,尋找有黃色感嘆號的檔案,這些檔案就是發生衝突的地方,根據實際情況處理衝突

米字號(有本地修改程式碼):
--這是說明你有未提交的原生程式碼。

問號(新加入的資源):
--這說明該檔案是專案中新增檔案資源,新增資源可以是檔案、圖片、程式碼等。

紅色感嘆號(原生程式碼與庫沒有保持一致):
--這說明原生程式碼跟庫上沒有保持一致,如果使用者想修復,可以將帶紅色感嘆號圖示檔案刪除,直接update即可。

灰色向右箭頭(本地修改過)
--原生程式碼沒有及時上庫。

藍色向左箭頭(SVN上修改過)
--記得更新程式碼後修改,提交前跟svn對比習慣。

灰色向右且中間有個加號的箭頭(本地比SVN上多出的檔案)
--修改完記得跟svn保持一致

藍色向左且中間有個加號的箭頭(SVN上比本地多出的檔案)
--刪除該檔案後,再次更新,將svn上檔案全部更新下來。

灰色向右且中間有個減號的箭頭(本地刪除了,而SVN上未刪除的檔案)
--也就是說你刪除確認後,一定要記得上庫,跟svn保持一致

藍色向左且中間有個減號的箭頭
(SVN上刪除了,而本地未刪除的檔案)
--比對svn庫上程式碼,確定需要刪除後,更新svn(刪除無用程式碼)。

紅色雙向箭頭(SVN上修改過,本地也修改過的檔案 )
--這個表示本地和svn上都修改過,最好就是把本地修改合併到svn,修改程式碼前最後先更新。


四、建立分支合併相互操作

專案中為何要建立分支,及合併?
比如我現在專案所有的檔案放在主幹上(trunk)中,由於需求的變更,需要增加新的需求,但是我們主幹上還要繼續往下開發,在此我們可以新建一個分支,來做增加新的需求那一塊,主幹上繼續開發,等分支上程式碼沒有問題的時候,再合併到主幹上來。
建立分支的最大的目的就是跟主線進行並行開發時候不影響主線的開發。
如何操作?
假如我本地新建一個資料夾test下有2個資料夾trunk(存放主幹上的程式碼)和branch(存放分支上的程式碼),如下所示:


1、先提取主幹上的程式碼。

點選trunk-->滑鼠右鍵-->點選SVN Checkout-->彈出一個對話方塊,如下圖所示:


其中上面的URL是從伺服器VisualSVN Server上獲取的,如下所示:


直接右鍵qianduan3-->Copy URL to Clipboard(複製網址到剪貼簿)即可。
其中qianduan3專案有如下檔案,如下圖所示:


最後點選上面的checkout按鈕後,就可以在主幹上把程式碼從遠端伺服器上獲取到,如下所示:



2、新建分支

從trunk(主幹上)建立分支(branch)步驟如下:
1.右鍵trunk-->branch/Tag如下圖:


在彈出的對話方塊如下圖:


點選ok按鈕後,就可以在VisualSVN Serval伺服器上新增newBranch,是從如上伺服器qianduan3上的檔案拷貝一份的,如下所示:


現在我們可以再來看看本地branch資料夾了,我現在直接進入branch檔案下,右鍵 --> Chenckout下,就可以把newBranch下的所有檔案提取出來了,如下所示:



點選ok按鈕就可以把檔案提取出來了,如下圖所示:


分支目前建立在svn的伺服器端,本地並沒有更新,對本地branch資料夾,右鍵-->update即可,就可以更新到分支程式碼,如下所示:



3、合併分支到主幹上

比如我現在對branch分支上新增3.txt檔案,然後提交上去,如下所示:


我現在想把分支上的程式碼3.txt合併到主幹上trunk,現在要怎麼合併呢?步驟如下:
1.回到我們剛剛的主幹(trunk)資料夾下,滑鼠右鍵該資料夾-->TortoiseSVN-->Merge如下圖所示:


在彈出的視窗,如下圖所示:


接著點選【Next】下一步,如下圖所示:


再接著【Next】下一步,如下圖所示:



就可以看到主幹trunk上多加了一個3.txt,就是從分支上合併過來的。


4、合併主幹到分支。

如果主幹上有一些更新,比如說jar包更新等等,那麼這些要更新到分支上去,如何操作呢?比如我現在在主幹上新建一個4.txt檔案,比如如下:


我現在的分支上目錄如下:


現在是想把主幹上的4.txt合併到分支上來,要如何操作?
步驟如下,還是和剛剛操作類似.
1.我們在分支點選branch-->右鍵TortoiseSVN-->Merge如下圖所示:


在彈出新視窗後,如下圖所示:


接著點選【Next】下一步,如下圖所示:


繼續下一步,如下圖:


最後直接merge,就可以看到分支branch上也有主幹上的4.txt檔案了,也就是說,合併主幹到分支上也是可以的,如下圖所示:








參考:

http://blog.chinaunix.net/uid-27004869-id-4112057.html點選開啟連結

http://www.cnblogs.com/armyfai/p/3985660.html點選開啟連結

http://www.cnblogs.com/sjj815/articles/5611266.html點選開啟連結

http://lihong11.iteye.com/blog/1936520點選開啟連結