軟件操作 SVN使用教程總結(下)

7.  SVN更新(SVN Update)

更新本地代碼與SVN服務器上最新的版本一致,只要在需要更新的文件夾上點擊右鍵或者在文件下空白處點擊右鍵,選擇”SVN Update” (獲取指定版本中的內容,點擊右鍵執行SVN菜單中的“Update to reversion“),就可以了。

7.1 如何解決衝突文件

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

 

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

解決方案如下:

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

<<<<<<< .mine

aaaasdf11222333 dderderder

=======

b>>>>>>> .r5

然後我去掉多餘的代碼,1.txt變成這樣

aaaasdf11222333 dderderder

進行提交,還是提交不了,如下所示:

 

爲什麼?因爲衝突會產生上面的三個文件,有上面3個文件存在肯定提交不了,這三個文件代碼及解釋如下:

1.txt.mine 是衝突前自己的文件。可以看下內容如下:
aaaasdf11222333 dderderder

2.  1.txt.r4 是衝突前本地的版本文件

內容如下:aaaasdf11222333

3.  1.txt.r5  是別人趕在你之前提交的版本

內容如下: b

其中,<<<<<<<<.mine .....=======之間的代碼是你自己的,而======......>>>>>>>.r5是別人與你衝突的代碼部分

這樣就不難理解爲什麼會產生衝突這種奇怪的東西了,因爲你們修改的同一塊代碼,當然會產生衝突。

解決方案如下:

假如我現在的1.txt中的衝突內容如下:
<<<<<<< .mine

6666666666666600000

=======

66666666666aaaaaaaaaa666

>>>>>>> .r16
前面說過  <<<<<<< .mine …… =======

……之間的代碼是我未產生衝突之前修改的代碼,

======= ………>>>>>>> .r16 這中間……的代碼是別人與我衝突代碼的部分,從上面的代碼可以看到 aaaaaaaaa是我同事新增的 ,00000是我後增加的。

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

 

 

點擊ok按鈕後 可以看到其他三個文件都自動刪掉了,1.txt代碼變成如下代碼:

66666666666aaaaaaaaaa666

也就是a用戶提交的代碼,我自己更新的代碼需要自己動手複製進去即可提交commit。

假如我現在3.txt產生衝突代碼如下:
<<<<<<< .mine

333333338888888888888=======

3333cccccccccc3333>>>>>>> .r16

通過第一點我們知道,333333338888888888888這個內容是我修改後,未產生衝突之前的內容,3333cccccccccc3333這個代碼是A用戶提交的代碼,從上面得知 A用戶新增內容是ccccccc,而我新增的內容是8888888。

那麼第二種解決方法如下:

選擇文件->右鍵Editconficts:這種方法需要衝突雙方經過協商之後將代碼更改統一之後再提交。不僅解決了衝突而且還保證了代碼是正確的,因爲只有一方的代碼被提交.

 

如上圖所示,紅色的部分是衝突代碼:theirs表示當前服務器端最新的代碼,Mine表示自己修改後的代碼,Merged表示合併後的代碼。點擊紅色後右鍵選擇:use this text block就可以將該部分代碼作爲合併後的代碼

接下來再說說由於衝突導致重要代碼被覆蓋的情況。衝突發生時如果採取的措施不對可能會導致部分代碼丟失,如果想要還原之前的代碼也很容易。

選擇文件->右鍵選擇show log在這裏面你可以看見之前提交的所有版本,找到你想要恢復的版本右鍵選擇revert to this version 就可以恢復了.

SVN提交(SVN Commit)

Svn的提交是將在工作空間做的修改進行提交,包括文件內容的修改,文件或目錄的添加,刪除,命名,移動等操作。如下圖所示:

 

8.   顯示日誌(Show log)

通過此功能可以查到誰,什麼時候,對那個目錄下的那些文件進行了那些操作,如下圖:

 

9.  版本庫瀏覽(Repo-browser)

此功能是用來瀏覽需要查看的資料庫,在本地文件夾下點擊右鍵,選擇TortoiseSVNàRepo-browser,在彈出的對話框中輸入資料庫地址,再輸入用戶名和密碼,就能查看到你需要查看到版本庫的內容,在這你還能看到那些文件被誰鎖定了,如下圖:

 

三: 創建分支合併相互操作

項目中爲何要創建分支,及合併?

比如我現在項目所有的文件放在主幹上(trunk)中,由於需求的變更,需要增加新的需求,但是我們主幹上還要繼續往下開發,在此我們可以新建一個分支,來做增加新的需求那一塊,主幹上繼續開發,等分支上代碼沒有問題的時候,再合併到主幹上來。

創建分支的最大的目的就是跟主線進行並行開發時候不影響主線的開發。

如何操作?

假如我本地新建一個文件夾test下有2個文件夾trunk(存放主幹上的代碼)和branch(存放分支上的代碼),如下所示:

 

一:先提取主幹上的代碼。

點擊trunk --> 鼠標右鍵 --> 點擊SVN Checkout --> 彈出一個對話框,如下圖所示:

 

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

 

直接右鍵qianduan3 --> Copy URL to Clipboard 即可。

其中qianduan3項目有如下文件,如下圖所示:

 

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

 

二:新建分支

從trunk(主幹上)創建分支(branch)步驟如下:

1. 右鍵trunk --> branch/Tag 如下圖:

 

在彈出的對話框如下圖:

 

點擊ok按鈕後,就可以在VisualSVN Serval服務器上新增newBranch,是從如上服務器qianduan3上的文件拷貝一份的,如下所示:

 

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

 

 

點擊ok按鈕就可以把文件提取出來了,如下圖所示:

 

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

 

四:合併分支到主幹上

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

 

我現在想把分支上的代碼3.txt合併到主幹上trunk,現在要怎麼合併呢?步驟如下:

1. 回到我們剛剛的主幹(trunk)文件夾下,鼠標右鍵該文件夾 --> TortoiseSVN --> Merge 如下圖所示:

 

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

 

接着點擊【Next】下一步,如下圖所示:

 

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

 

 

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

五:合併主幹到分支。

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

 

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

 

現在是想把主幹上的4.txt合併到分支上來,要如何操作?

步驟如下,還是和剛剛操作類似.

1. 我們在分支點擊branch --> 右鍵TortoiseSVN --> Merge 如下圖所示:

 

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

 

接着點擊【Next】下一步,如下圖所示:

 

繼續下一步,如下圖:

 

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章