svn 常用命令:


 (確實不想用svn,奈何一些項目,唉...)

一、取出代碼:

svn checkout https://****/branches/svn_test_r201

二、創建分支:

例如:從 branches/svn_test_r201 創建新分支 svn_test_r202 (svn_test_r202,這個目錄不要提前創建

svn copy https://****/branches/svn_test_r201 https://****/branches/svn_test_r202

三、svn add

把readme文件納入到版本控制中
svn add readme

如果add文件夾,則默認把該文件夾下未納入版本控制的文件一並納入控制
svn add doc

如果只想把目錄納入控制,而不想把所有該目錄下的文件納入控制,可以增加non-recursive
svn add doc --non-recursive

一次性增加所有(這種情況下會排除non-recursive的doc目錄下的文件)
svn add *

把doc下的文件也一並納入控制,增加force參數
svn add * --force

遍歷當前目錄下的所有未添加的文件,添加到版本控制中
svn add . --no-ignore --force

四、svn commit

添加文件
svn commit -m "add file readme"
or
svn ci -m "add file readme"

五、log 操作

查看最新的10 個提交版本

看最新的10行
svn log -l 10

看最新的4行,詳細
svn log -v --limit 4

滑動看日志
svn log | less

查看版本之間的日志

svn log -r 274090:274093
svn log -r 274093:274090

六、diff 操作

(版本號之前的 “r”,帶不帶都行)

274903 版本 和上一個版本的差異

cd  svn_test_r201
svn diff -c 274903

274901 版本 和274903版本的差異

cd  svn_test_r201
svn diff -r 274901:274903

274901 版本 和274903版本的文件差異(后面加文件名)

cd  svn_test_r201
svn diff -r 274901:27490 diff.txt

文件的差異

svn diff -r 版本號 文件名
svn diff -r HEAD 文件名   #本地與最新版本的區別

七、merge操作:

假設:有兩個分支

分支1:https://****/branches/svn_test_r201

分支2:https://****/branches/svn_test_r202

(如果svn_test_r202有修改,大概率有沖突)

merge 分支2 的代碼到 分支1(反之,換個目錄,同樣操作)

第一種:svn merge from to

例如:合並 svn_test_r202 的所有改變 到 svn_test_r201

cd  svn_test_r201
svn merge https://****/branches/svn_test_r202

第二種:svn merge -c 版本號 from to

例如:合並 版本號為 274894 的 svn_test_r202 的改變 到 svn_test_r201

cd  svn_test_r201
svn merge -c 274894 https://****/branches/svn_test_r202

第三種:svn merge -r 版本號:版本號 from to

例如:合並 版本號 274891到274893 的 svn_test_r202 的更改 到 svn_test_r201

cd  svn_test_r201
svn merge -r 274891:274893 https://****/branches/svn_test_r202

 八、代碼回滾

回滾到制定的版本上:

svn log 找到最新的版本號,274906

比如:274906 要回滾到 274902

cd  svn_test_r201
svn merge -r 274906:274902 https://****/branches/svn_test_r202

 九、解決沖突

舉例:svn up(出現沖突)

[*****]$ svn up
在 “readme” 中發現沖突。
選擇: (p) 推遲,(df) 顯示全部差異,(e) 編輯,
        (mc) 我的版本, (tc) 他人的版本,
        (s) 顯示全部選項:

1、根據選項:e現在編輯 or mc接受我的版本 or tc接受他人的版本;(等於是直接手動解決)

2、或者選擇:p 推遲 (以下都是推遲后,純手動解決)

2.1 推遲后手動修改沖突,並提交(等同於 選項 e)

2.1.1、推遲后打開沖突文件 readme

$ cat sandwich.txt
Top piece of bread
Mayonnaise
Lettuce
Tomato
Provolone
<<<<<<< .mine(下面是本地的修改,<<< 和 === 之間)
Salami
Mortadella
Prosciutto
======= (下面是遠程服務器,別人提交的修改,==== 和 >>>> 之間)
Sauerkraut
Grilled Chicken
>>>>>>> .r2
Creole Mustard
Bottom piece of bread

2.1.2 、去掉別人的修改,或者保留刪除,自己手動合並代碼:

Top piece of bread
Mayonnaise
Lettuce
Tomato
Provolone
Salami
Mortadella
Prosciutto
Creole Mustard
Bottom piece of bread

2.1.3、使用命令 svn resolve 移除文件的沖突狀態后; 接下來就可以提交修改了

$ svn resolve --accept working readme
Resolved conflicted state of 'readme'
$ svn commit -m "modify working"

      --accept=working :告訴 Subversion 把文件的當前內容作為沖突解決后的狀態;

     svn resolve 會刪除目錄下的三個臨時文件, 將用戶指定的 文件版本作為沖突解決后的最終版。

2.2 全丟棄自己的修改(接受別人的修改,等同於選項 tc)

svn resolve --accept theirs-full readme

2.3 丟棄當前的所有修改 (等效於 2.2的操作,等同於選項 tc)

svn revert readme

2.3 接受本地mine 的更改(等同於 選項 mc )

svn resolve –accept mine-full readme


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM