经常用Git, 偶然碰到SVN管理的项目,往往又需要从头熟悉一遍SVN的命令,特记录下常用的SVN命令。
注:以下记录基于macOs自带svn命令。
一、svn管理项目开发。
0、安装svn colordiff。
工欲善其事必先利其器,命令行下的colordiff是非常有必要的
brew install colordiff svn diff | colordiff 出现色彩
或者修改配置, 直接使用svn diff
echo 'diff-cmd = colordiff' >> ~/.subversion/config
当然设置别名也行
1、从svn服务器上检出代码到本地。
svn checkout https://svn1.intra.niliu.com/subcode/niliu/trunk ~/svn/project
以上命令会提示输入用户名和密码,也可安装如下方式之间指定
svn checkout https://svn1.intra.niliu.com/subcode/niliu/trunk --username=salmonl --password=salmonl ~/svn/project
2、新建分支。
svn copy -m 'new branch' https://svn1.intra.niliu.com/subcode/niliu/trunk https://svn1.intra.niliu.com/subcode/niliu/branches/feature_user_20181223
3、查看文件状态。
svn st
4、添加新文件。
svn add filename
5、提交新文件。
提交单个文件
svn ci -m 'msg' filename1 filename2
提交目录下全部文件
svn ci -m 'msg' dir/*
6、跟新文件。
svn up
7、查看最近5次提交log。
svn log -l 5
8、查看svn目录信息
svn info
9、删除远程分支。
svn rm https://svn1.intra.niliu.com/subcode/niliu/branches/feature_user_20181223
10、查看手册。
svn -h
11、svn删除已提交文件命令
svn delete info.log svn ci -m 'del info.log' # 一条命令不行 svn delete info.log -m 'del info.log'
二、svn管理项目上线
0、本地单独checkout trunk
1、合并开发分支branch到trunk
cd ~/trunk svn merge https://svn1.intra.niliu.com/subcode/niliu/branches/feature_user_20181223
注意:有冲突就选择p稍后处理
2、svn st 查看不同,挨个review 代码,修改的文件svn diff 查看不同,新增文件vim打开看
3、处理冲突文件,删除多余文件,svn resolve
4、对于不需要修改的文件, 通过revert回退版本。
svn revert filename
5、修改后提交
三、svn常见问题处理
0、svn代码回滚
# 从版本1468962回滚到版本1468376 svn merge -r 1468962:1468376 ./
1、svn对比两次提交差异
svn diff -r 1450068:1450027
注意差异文件后面后版本号
2、放弃本地全部修改文件。
svn revert -R ./*
3、svn up 失败: 同名未版本控制的文件已存在。
svn up --force
4、svn commit 提示svn: E175015: The HTTP method ‘MKCOL’ is not allowed on
原因:一个目录同事已创建提交了,我本地也创建了一个同名文件夹,提交之前没有更新。
解决
# 提交之前更新 svn up