之前版本控制用的是Git,然后新項目的開展,用的是SVN。這使得對SVN八竅通了七竅的我很難不舒服。同事告訴我了一些在webstorm上面的基本用法,但是用命令行習慣的我,覺得還是用命令行比較習慣。終于我決定學習一下SVN的用法。
其實,SVN在一定程度上面和Git還是很相似的,一些merge,commit,等等的基本用法還是相通的,不一樣的可能就是SVN沒有push以及pull的操作。
1.首先,我們先來一些SVN的基本用法:
# 萬能方法
svn help
# 查看當前更改的文件
svn status(st)
# 將文件從遠程倉庫拷貝到本地的工作目錄
svn checkout(co) 你需要copy的遠程倉庫地址
# 往版本庫中添加新的文件
svn add file
# 提交代碼
svn commit(ci) -m"your comments" 文件名
# 更新代碼
svn update(up) 更新的文件或者文件目錄 如果不寫,默認將當前目錄更新到最新狀態(tài)
# 查看本項目的信息
svn info
# 查看指定文件的信息
svn info filename
# 查看本項目的日志
svn log
# 查看指定文件的日志
svn log filename
# 查看分支的從哪個版本來的
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(對版本m和版本n比較差異)

image.png
使用svn update在開始工作時和提交之前先做一次更新是一個良好的習慣。
假如在我們修改工作目錄的同時,有人也更新了同樣的文件并已經(jīng)提交到遠程倉庫,那我們在更新時有可能就會遇到?jīng)_突(conflict)。
可以設(shè)定’accept’參數(shù),指定’working’, ‘base’,
(p) postpone: 暫時推后處理
(df) diff-full: 把所有的修改列出來,比比看
(e) edit: 直接編輯沖突的文件
(mc) mine-conflict: 用你的修改
(tc) theirs-conflict: 用別人的修改
(s) show all options: 顯示其他可用的命令
我們可以選擇以上命令中的任何一個在解決沖突,一般選擇p的話,后續(xù)要用svn resolve標識已解決沖突的文件。
2.分支以及標簽的管理:
# 創(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"
# 分支合并到主干 注意:此時需要在trunk下進行
svn merge -r 1069(分支創(chuàng)建時的版本):1092(分支現(xiàn)在的版本) branchesUrl
# 查看當前Branch中已經(jīng)有那些改動已經(jīng)被合并到Trunk中
svn mergeinfo svn://branch/path
# 查看Branch中那些改動還未合并
svn mergeinfo branchesUrl --show-revs eligible
# 主干合并到分支 注意:此時需要在分支下進行
svn merge -r 1069(分支創(chuàng)建時的版本):25(trunk現(xiàn)在的版本) trunkUrl
# 切換分支
svn switch (sw) 要切換的地址
剛開始用命令行的SVN操作來管理版本,這些只是基礎(chǔ)操作,以后,用到的會及時更新。