SVN命令列使用介紹

weixin_33912246發表於2018-12-17

1.對專案進行初始化工作

/*

 01 需要連線到遠端的SVN倉庫,把倉庫下載到自己的電腦上

    $ svn checkouthttp://172.16.181.128/svn/XMG/--username=manager --password=manager

 02 切換到Code路徑中,建立Main.m檔案

    $ touch Main.m

 03 檢視本地倉庫中檔案的狀態

    $ svn status  //? 表示該檔案沒有被SVN管理

 04 把新建立的檔案納入到SVN的管理者,檢視檔案狀態

    $ svn add Main.m //A 表示該檔案被新增到SVN

 05 把本地倉庫的更改(建立新的檔案)提交到遠端的伺服器

    $ svn commit -m "建立了Main檔案" Main.m  //注意每次提交的時候都需要寫上註釋

 06 修改Main.m檔案

    $ echo "Main.m檔案" > Main.m 

 07 檢視檔案的狀態

    $  svn status //M 表示該檔案被修改

 08 把本地的更改提交到遠端的伺服器

    $ svn commit -m "修改了檔案" Main.m

 */

2.SVN命令列刪除檔案

/*

 01 專案經理刪除Main.m檔案,檔案狀態為D

    $ svn remove Main.m

 02 把本地的更改(刪除操作)提交到遠端的伺服器

    $ svn commit -m "刪除了檔案" Main.m

 */

3.SVN相關命令列的簡寫

/*

 checkout -- co 

 status  -- st

 commit  -- ci

 remove  -- rm

 update  -- up

 */

4.檢視版本資訊

/*

 01 首先需要更新獲得最新的倉庫資訊

    $ svn update |svn up

 02 檢視倉庫的版本資訊

    $ svn log

 */

5.新同事張三加入開發涉及操作

/*

 01 張三加入公司開發,分配SVN賬號,賬號=密碼=zhangsan,並且設定許可權

 02 張三連線到遠端的伺服器,把倉庫下載到本地

    $ svn checkouthttp://172.16.181.128/svn/XMG/--username=zhangsan --password=zhangsan

 03 張三切換路徑到Code,建立Dog.h Dog.m 檔案

    $ touch Dog.h Dog.m

 04 檢視檔案的狀態(? 注意新建立的檔案預設是不會自動被SVN管理的)

    $ svn status

 05 把新新增的檔案納入到SVN的管理中

    $ svn add Dog.h Dog.m |svn add *(表示把當前檔案路徑中所有的檔案都新增到SVN版本庫中)

 06 張三把本地的更改提交到遠端的倉庫

    $ svn commit -m "建立了狗類" Dog.h Dog.m //可以不跟具體的檔名,如果不寫那麼表示把所有的更改提交

 07 專案經理更新獲得最新的程式碼

    $ svn update

 08 專案經理修改Dog.h檔案.往檔案中輸入內容-hello Dog!

    $ echo "hello Dog" >Dog.h

 09 專案經理把更改提交到遠端的倉庫

    $ svn commit -m "修改了檔案輸入hello Dog" Dog.h

 10 張三更新獲得最新的倉庫資訊

    $ svn update

 */

6.多人開發的時候可能會產生衝突

/*

 01 專案經理往Dog.h檔案中的第二行中寫入資料 "你好,我是專案經理",把更改提交到遠端的倉庫

    $ svn commit -m "輸入你好,我是專案經理字串" Dog.h

 02 如果張三沒有更新程式碼,就直接修改了同一個地方

    $ svn commit -m "輸入我是張三字串" Dog.h

    ==error== is out of date 該檔案過期:如果當前的版本低於伺服器的版本那麼無法提交成功

 03 張三需要先更新獲得最新的倉庫資訊

    $ svn update //產生了衝突


 */

7.解決衝突01-使用tc

/*

 //tc 使用伺服器端的資料內容來覆蓋掉我本地的資料內容


解決衝突02-使用mc

 //mc 以我的為準,用本地的資料內容覆蓋掉伺服器端的,版本號 + 1

 //+ 還需要做一次提交

 $ svn commit -m "解決了衝突以mc的方式" Dog.h


解決衝突03-使用postpone(resolved)

 //p 手動的解決衝突

 (1) 開啟有衝突的檔案,把衝突解決(刪除特殊字元)

 (2) 通過命令列告訴SVN已經手動的把衝突解決了 $ svn resolved Dog.h

 (3) 把更改提交到遠端的倉庫 $ svn commit -m "解決衝突使用p" Dog.h

 */

8.SVN版本回退操作(revert|merge)

/*

 版本回退的兩種情況:

 01 本地的程式碼做了修改,該修改還沒有提交到遠端倉庫,取消更改

    $ svn revert Dog.h

 02 本地的程式碼做了修改,該修改已經被提交到遠端倉庫,回退到上一個版本

    [1] 回到指定的版本 svn update -r版本號

        $ svn update -r14

        $ svn commit -m "Dog檔案回退到上一個版本" Dog.h //直接提交沒有反應(不能使用這種方式版本回退)

    [2] 版本回退

        (1)先更新獲得最新的版本  $ svn update 

        (2)用指定版本的內容來覆蓋當前版本的內容   

         $ svn merge -r15:r14 Dog.h //表示使用第14個版本的Dog.h檔案內容來覆蓋掉第15個版本的內容

        (3)還需要把更改提交到遠端倉庫

        $ svn commit -m "Dog檔案回退到上一個版本"

 */

相關文章