之前版本控制用的是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) 更新的文件或者文件目录 如果不写,默认将当前目录更新到最新状态
# 查看本项目的信息
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(将修改的文件与基础版本比较)
svn diff -r m:n path(对版本m和版本n比较差异)
image.png
使用svn update在开始工作时和提交之前先做一次更新是一个良好的习惯。
假如在我们修改工作目录的同时,有人也更新了同样的文件并已经提交到远程仓库,那我们在更新时有可能就会遇到冲突(conflict)。
可以设定’accept’参数,指定’working’, ‘base’,
(p) postpone: 暂时推后处理
(df) diff-full: 把所有的修改列出来,比比看
(e) edit: 直接编辑冲突的文件
(mc) mine-conflict: 用你的修改
(tc) theirs-conflict: 用别人的修改
(s) show all options: 显示其他可用的命令
我们可以选择以上命令中的任何一个在解决冲突,一般选择p的话,后续要用svn resolve标识已解决冲突的文件。
2.分支以及标签的管理:
# 创建分支:
svn copy(cp) trunkUrl branchesUrl -m"create branches"
# 删除分支:
svn delete(rm/remove) branchesUrl -m "delete branches "
# 创建tag:
svn copy(cp) trunkUrl tagUrl -m"create tag"
# 删除tag:
svn delete(rm/remove) tagUrl -m "delete tag"
# 分支合并到主干 注意:此时需要在trunk下进行
svn merge -r 1069(分支创建时的版本):1092(分支现在的版本) branchesUrl
# 查看当前Branch中已经有那些改动已经被合并到Trunk中
svn mergeinfo svn://branch/path
# 查看Branch中那些改动还未合并
svn mergeinfo branchesUrl --show-revs eligible
# 主干合并到分支 注意:此时需要在分支下进行
svn merge -r 1069(分支创建时的版本):25(trunk现在的版本) trunkUrl
# 切换分支
svn switch (sw) 要切换的地址
刚开始用命令行的SVN操作来管理版本,这些只是基础操作,以后,用到的会及时更新。
网友评论