之前版本控制用的是Git,然后新項(xiàng)目的開展妒蛇,用的是SVN机断。這使得對(duì)SVN八竅通了七竅的我很難不舒服。同事告訴我了一些在webstorm上面的基本用法绣夺,但是用命令行習(xí)慣的我吏奸,覺(jué)得還是用命令行比較習(xí)慣。終于我決定學(xué)習(xí)一下SVN的用法陶耍。
其實(shí)奋蔚,SVN在一定程度上面和Git還是很相似的,一些merge烈钞,commit泊碑,等等的基本用法還是相通的,不一樣的可能就是SVN沒(méi)有push以及pull的操作毯欣。
1.首先馒过,我們先來(lái)一些SVN的基本用法:
# 萬(wàn)能方法
svn help
# 查看當(dāng)前更改的文件
svn status(st)
# 將文件從遠(yuǎn)程倉(cāng)庫(kù)拷貝到本地的工作目錄
svn checkout(co) 你需要copy的遠(yuǎn)程倉(cāng)庫(kù)地址
# 往版本庫(kù)中添加新的文件
svn add file
# 提交代碼
svn commit(ci) -m"your comments" 文件名
# 更新代碼
svn update(up) 更新的文件或者文件目錄 如果不寫,默認(rèn)將當(dāng)前目錄更新到最新狀態(tài)
# 查看本項(xiàng)目的信息
svn info
# 查看指定文件的信息
svn info filename
# 查看本項(xiàng)目的日志
svn log
# 查看指定文件的日志
svn log filename
# 查看分支的從哪個(gè)版本來(lái)的
svn log --verbose --stop-on-copy | tail -10
M /tags/version3.3.0(0417)/www/js/app.config.js
app.config.js 添加 年月日字段: APP_UPDATEVERSION
------------------------------------------------------------------------
r1034 | XXX | 2018-04-17 11:15:26 +0800 (二, 17 4 2018) | 1 line
Changed paths:
A /tags/version3.3.0(0417) (from /trunk:1033)
------------------------------------------------------------------------
# 比較差異
svn diff(di) path(將修改的文件與基礎(chǔ)版本比較)
svn diff -r m:n path(對(duì)版本m和版本n比較差異)
使用svn update在開始工作時(shí)和提交之前先做一次更新是一個(gè)良好的習(xí)慣酗钞。
假如在我們修改工作目錄的同時(shí)腹忽,有人也更新了同樣的文件并已經(jīng)提交到遠(yuǎn)程倉(cāng)庫(kù),那我們?cè)诟聲r(shí)有可能就會(huì)遇到?jīng)_突(conflict)砚作。
可以設(shè)定’accept’參數(shù)窘奏,指定’working’, ‘base’,
(p) postpone: 暫時(shí)推后處理
(df) diff-full: 把所有的修改列出來(lái),比比看
(e) edit: 直接編輯沖突的文件
(mc) mine-conflict: 用你的修改
(tc) theirs-conflict: 用別人的修改
(s) show all options: 顯示其他可用的命令
我們可以選擇以上命令中的任何一個(gè)在解決沖突葫录,一般選擇p的話着裹,后續(xù)要用svn resolve標(biāo)識(shí)已解決沖突的文件。
2.分支以及標(biāo)簽的管理:
# 創(chuàng)建分支:
svn copy(cp) trunkUrl branchesUrl -m"create branches"
# 刪除分支:
svn delete(rm/remove) branchesUrl -m "delete branches "
# 創(chuàng)建tag:
svn copy(cp) trunkUrl tagUrl -m"create tag"
# 刪除tag:
svn delete(rm/remove) tagUrl -m "delete tag"
# 分支合并到主干 注意:此時(shí)需要在trunk下進(jìn)行
svn merge -r 1069(分支創(chuàng)建時(shí)的版本):1092(分支現(xiàn)在的版本) branchesUrl
# 查看當(dāng)前Branch中已經(jīng)有那些改動(dòng)已經(jīng)被合并到Trunk中
svn mergeinfo svn://branch/path
# 查看Branch中那些改動(dòng)還未合并
svn mergeinfo branchesUrl --show-revs eligible
# 主干合并到分支 注意:此時(shí)需要在分支下進(jìn)行
svn merge -r 1069(分支創(chuàng)建時(shí)的版本):25(trunk現(xiàn)在的版本) trunkUrl
# 切換分支
svn switch (sw) 要切換的地址
剛開始用命令行的SVN操作來(lái)管理版本压昼,這些只是基礎(chǔ)操作求冷,以后,用到的會(huì)及時(shí)更新窍霞。