(確實不想用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