SVN常用命令

SVN常用命令

	之前一直使用git工具作为版本控制系统管理代码,但最近公司使用了svn工具管理代码,因此还是有必要学一下常用命令方便开发,和git还是有很多类似的地方。

一、拉取库上代码到本地

svn checkout  code_path
如:svn checkout https://127.0.0.1/trunk/test
简写:svn co code_path

二、添加新文件或者目录到版本库

svn add file /dir
如: svn add test.txt /*.c     -----添加文件,可以使用通配符
		svn add test                -----添加目录,默认把目录下未加入版本控制的文件全部加入
	 	svn add test    --non-recursive     ------只添加目录到版本控制,目录下的文件不加入   
	 	svn add *                    ------一次性添加全部(效果同上)
	 	svn add * --force        ------添加全部,目录下的文件也一并加入
	 	svn add . --no-ignore --force       -------遍历当前目录下的所有未添加的文件,添加到版本控制中

三、将修改的文件提交到版本库

svn commit -m "message" file
如:svn commit -m "add test file"  test
简写:svn ci 
一次性提交所有被修改的文件到版本库
svn commit -m "update all file" `svn status | grep -i M | awk '{print $2}'`

四、查看文件或者目录状态

svn status      -----查看哪些文件或目录被修改,删除,新增
简写 svn st
svn diff [file]   ------查看文件修改的具体内容,不加具体文件,默认输出所有修改
如:svn diff -r 1:2 test.txt    ----查看版本1和版本2的文件差异
		svn diff -r HEAD file    ----本地和最新版本的区别

五、更新操作

svn update -r m path
如:svn update -r 10 test.txt       -----将test.txt文件更新到10版本的文件
       svn up                                    ------将所有文件更新到库上最新
简写:svn up

六、删除库上文件

svn delete path -m "delete test fle"
 如:svn delete svn://127.0.0.1/trunk/test.txt -m "delete test file"
 	    或者
        svn delete test.txt
        svn commit -m "delete test file"   test.txt
简写:svn  (del, remove, rm)

七、查看日志

svn log path
如:svn log test.txt         -----显示这个文件的所有修改记录,及其版本号的变化
    svn log -l 8                -----查看最新的8行
    svn log -v --limit 4      -----详细查看最新的4行
    svn log | less             -----重定向less翻页看
    svn log -r  1:10          -----查看版本1到版本10之间的日志

八、撤销本地修改

svn revert file
如:svn revert test.txt    -----丢弃test文件的修改,但是不会恢复删除的文件或目录

九、merge操作

svn merge url
svn merge -c version url
svn merge -r version0:version1 url

假设有两个分支:主干,基于主干拉出来的分支
https://127.0.0.1/trunk/example
https://127.0.0.1/branch/example

在分支上修改了文件,并且迭代了很多版本,现在需要合并到主干
如:
cd trunk/example
svn merge https://127.0.0.1/branch/example
svn commit -m "merge branch to trunk"

cd trunk/example
svn merge -c 100 https://127.0.0.1/branch/example
svn commit -m "merge branch version100 to trunk"

cd trunk/example
svn merge -r 100:110 https://127.0.0.1/branch/example
svn commit -m "merge branch version100~version110 to trunk"


结合以下三个命令可以实现版本回滚(比如主干提交最新的代码有bug,需要回退到上一个版本)
svn log                           ---找到最新版本号r1
svn merge -r r1(new):r0(old) .    ---在本地将r1回滚到r0
svn commmit -m "rollback r0->r1"  ---提交到远程库

十、解决冲突

1、svn up    ---更新出现冲突

2、选择冲突后怎么选择
在某些文件中出现冲突,如:test.txt的同一行被修改
显示选项:p(推迟)
		  diff(显示全部差异)
		  e(编辑)
		  mc(只保留我的版本)
		  tc(只保留他人版本)
		  s(显示全部选项)
1)直接选择e or mc or tc立刻解决冲突
2)选择p,代表推迟,之后可以打开文件看冲突在哪,分析并解决冲突

如:cat test.txt
hello
<<<<<<  (<<<和===代表本地修改,===和>>>代表远程服务器别人提交的修改)
xiaoming
======
xiaohong
>>>>>>>
world

修改后

hello
xiaoming
world

3、svn resolve --accept working test.txt    (--accept=working : 把文件的当前内容作为冲突解决后的状态; svn resolve : 会删除目录下的三个临时文件, 将用户指定的 文件版本作为冲突解决后的最终版。)
4、svn commit -m "update test" test.txt

你可能感兴趣的:(工具类,svn,git)