如何在Mac上輕松使用SVN
大家都知道,在Mac或Linux環(huán)境下使用git比較方便,但有時(shí)候根劇項(xiàng)目要求又不得不使用SVN,在windows系統(tǒng)上面有我們最為熟悉的小烏龜(TortoiseSVN,下載鏈接:https://tortoisesvn.net/downloads.zh.html)在mac系統(tǒng)上面則很少svn的工具,本文就帶大家對(duì)比Git,介紹如何在Mac上輕松使用命令行進(jìn)行操作SVN,同時(shí)提升開(kāi)發(fā)人員的格調(diào)。
1.安裝svn 命令:
mac:
brew?install?svn
centos:
yum?-y?install?subversion
2、驗(yàn)證是否安裝成功
?svn?--version
出現(xiàn)以下內(nèi)容表示安裝成功?
3.拉取倉(cāng)庫(kù)文件
通過(guò)svn checkout命令檢出資源,?svn checkout 可以使用縮寫(xiě)svn co
svn?checkout?svn://xxxxxx
例子:
[root@s145?tmp]#?svn?checkout?svn://192.168.0.146:18080/repos?/tmp/svntest?--username=testuser
#等同于
git?clone????git@gitlab.*.com:gituser/*.com.git?(fetch)
格式:
svn?checkout?http://路徑(目錄或文件的全路徑) [本地目錄全路徑]?--username?用戶名?--password?密碼
?3.添加文件
使用svn add命令添加前要求文件已存在,添加新文件只是告訴SVN,并沒(méi)有真實(shí)提交,需要使用commit提交。
svn?add?file
#等同于
git?add?file
4.提交文件到svn
svn?commit?-m?"LogMessage"?[-N]?[--no-unlock]?PATH(如果選擇了保持鎖,就使用--no-unlock開(kāi)關(guān))
#等同于
git?commit?-m?'init提示信息'?filepath
#-m參數(shù)為必選,可以為空,用于備注說(shuō)明
#commit前必須先svn add添加文件到版本控制庫(kù)。
#svn commit可以縮寫(xiě)為svn ci
5.加鎖/解鎖(很少用到)
?svn?lock?-m?"LockMessage"?[--force]?PATH
?svn?unlock?PATH
#例如
[root@s145?svntest]#?svn?lock?2.log
‘2.log’?locked?by?user?‘wuhs’.
[root@s145?svntest]#svn?unlock?2.log
‘2.log’?unlocked.
[root@s145?svntest]#?svn?lock?-m?“鎖定2.log”?2.log
‘2.log’?locked?by?user?‘wuhs’.
6.更新svn資源到某個(gè)版本
#來(lái)源:公眾號(hào)【碼農(nóng)編程進(jìn)階筆記】
1.svn?update?-r?m?
2.svn?update如果后面沒(méi)有目錄,默認(rèn)將當(dāng)前目錄以及子目錄下的所有文件都更新到最新版本。
#相當(dāng)于?git?pull?
3.svn?update?-r?200?test.php(將版本庫(kù)中的文件test.php還原到版本200)
#相當(dāng)于
git??reset??052e???????????#?回退到指定版本
4.svn?update?test.php(更新,于版本庫(kù)同步。如果在提交的時(shí)候提示過(guò)期的話,是因?yàn)闆_突,需要先update,修改文件,然后清除svn?resolved,最后再提交commit)?
?svn update? ? ? ? ? ?#更新整個(gè)版本庫(kù)
svn update -r 修正版本 文件名? #回退指定文件
svn update 文件名? ? ? ##更新指定文件
版本號(hào)可以通過(guò)svn log查看
7.查看文件或者目錄狀態(tài)
svn status?命令簡(jiǎn)寫(xiě)svn st
svn?status?path
#相當(dāng)于
git?status[root@s145?svntest]#?svn?status?2.log
M?2.log
[root@s145?svntest]#?svn?status?3.log
[root@s145?svntest]#?svn?status?-v?testdir/
5?1?wuhs?testdir

?:不在svn的控制中;
M:內(nèi)容被修改;
C:發(fā)生沖突;
A:預(yù)定加入到版本庫(kù);
K:被鎖定
8.刪除文件
通過(guò)svn delete刪除文件后需要執(zhí)行提交操作才會(huì)真正刪除。
#方法一:刪除和提交操作
svn?delete?path?-m?"delete?test?fle"
#方法二:先刪除再提交
svn?delete?1.log
svn?commit?-m?“”
9.查看日志
svn?log?path
#查看某個(gè)文件的日志
svn?log?2.log
10.查看文件詳細(xì)信息
svn?info?path
11.將兩個(gè)版本之間的差異合并到當(dāng)前文件
svn?merge?-r?m:n?path
12.SVN 幫助
svn?help
13.比較文件版本差異
svn?diff?file??
命令可以簡(jiǎn)寫(xiě)為svn di
[root@s145?svntest]#?/opt/csvn/bin/svn?diff?2.log
[root@s145?svntest]#?ll
total?0
-rw-r–r--?1?root?root?0?Feb?11?17:06?2.log
-rw-r–r--?1?root?root?0?Feb?11?17:35?3.log
drwxr-xr-x?2?root?root?6?Feb?11?17:03?testdir
-rw-r–r--?1?root?root?0?Feb?11?17:03?testfile.txt
[root@s145?svntest]#?echo?“2-test”?>?2.log
[root@s145?svntest]#?/opt/csvn/bin/svn?diff?2.log
Index:?2.log
===================================================================
—?2.log?(revision?5)
+++?2.log?(working?copy)
@@?-0,0?+1?@@
+2-test
14.解決沖突
[root@s145?svntest]#?svn?resolved?2.log
Resolved?conflicted?state?of?‘2.log’
[root@s145?svntest]#?svn?commit?-m?“”?2.log
Sending?2.log
Transmitting?file?data?.
Committed?revision?9.
15.創(chuàng)建納入版本控制下的新目錄
[root@s145?svntest]#?svn?mkdir?abc
A?abc
[root@s145?svntest]#?ls
2.log?3.log?abc?testdir?testfile.txt
[root@s145?svntest]#?svn?commit?-m?“新增目錄”?./
Adding?abc
Committed?revision?11.
16.版本庫(kù)下的文件和目錄列表
svn?list?命令簡(jiǎn)寫(xiě)svn?li
[root@s145?svntest]#?svn?list?./
1.log
2.log
testdir/
testfile.txt
17.不更新情況下查看SVN文件
svn?cat?file
18. 新建分支
[root@s145?svntest]#?svn?mkdir?branches
A?branches
[root@s145?svntest]#?svn?copy?svn://192.168.0.146:18080/repos/testdir?svn://192.168.0.146:18080/repos/branches?-m?“新建分支測(cè)試”
Committed?revision?12.
19.遞歸清理工作拷貝
[root@s145?svntest]#?svn?cleanup
#遞歸清理工作拷貝,刪除未完成的操作鎖定。
如果你得到一個(gè)“工作拷貝已鎖定”的錯(cuò)誤,
運(yùn)行這個(gè)命令可以刪除無(wú)效的鎖定,
讓你的工作拷貝再次回到可用的狀態(tài)。
命令語(yǔ)法是svn?cleanup?[PATH…],如果沒(méi)有傳遞路徑則使用默認(rèn)值"."
20.svn提交文件流程
(1)首次提交文件
svn?add?file
svn?commit?-m?'msg'?file
(2)非首次提交文件
svn?commit?-m?'second'?file
21.git 提交文件流程
git?add?file????#每次提交時(shí)都需要add添加
git?commit?-m?'msg'
git?push?origin?dev
精彩文章




