SVN命令行相关操作

First Post:

Last Update:

基础操作

将数据导入存储库

1
svn import https://svn.example.com/repos/MyRepo/MyProject/trunk -m "Initial project import"

签出工作副本

1
svn checkout https://svn.example.com/repos/MyRepo/MyProject/trunk MyWorkingCopy

更新工作副本

1
svn update

在本地工作副本中进行更改

1
svn commit -m "My Descriptive Log Message"

执行文件和目录操作

添加新文件和目录

1
2
3
4
5
6
7
8
# 添加新文件到版本库
svn add filename

# 添加当前目录下所有php文件
svn add *.php

# 递归添加当前目录下的所有新文件
svn add . --no-ignore --force

复制文件和目录

1
svn copy foo.cs bar.cs

删除文件和目录

1
svn delete foo.cs

恢复或放弃本地更改

1
2
3
4
5
6
# 撤销本地文件的修改(还没提交的)
svn revert test.php
svn revert -r 目录名

# 撤销目录下所有本地修改
svn revert --recursive 目录名

查看日志和改动

查看日志

1
2
3
4
5
# 查看指定文件的所有日志
svn log test.php

# 查看指定版本号的日志
svn log -r 100

查看改动

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 查看当前工作区的所有改动
svn diff

# 查看当前工作区test.php文件与最新版本的差异
svn diff test.php

# 指定版本号比较差异
svn diff -r 200:201 test.php

# 查看当前工作区和版本301中bin目录的差异
svn diff -r 301 bin

# 显示文件的每一行最后是谁修改的(出了BUG,经常用来查这段代码是谁改的)
svn blame filename.php

查看版本库信息

1
2
3
4
5
6
7
8
9
10
11
12
# 查看当前工作区的状态
svn status

# 查看svn信息
svn info

# 查看文件列表,可以指定-r查看,查看指定版本号的文件列表
svn ls
svn ls -r 100

# 查看指定版本的文件内容,不加版本号就是查看最新版本的
svn cat test.py -r 2

清理

1
2
# 清理
svn cleanup

分支和标记

您应该使用svn copy命令创建分支和标签。当您希望项目与历史记录相关时,这是用于复制项目和存储库中项目的命令。
svn copy命令用于分支,因为从技术上讲branch是复制源的副本。但是,它不是在本地文件系统上复制文件时所熟悉的普通副本。Subversion存储库中的分支称为“便宜副本”,类似于符号链接。因此,创建新分支将花费最少的时间来完成,并且在Subversion存储库中几乎不占用空间。您可以创建分支并将其用于所需的任何更改,而不考虑更改的大小和范围。

使用直接URL到URL复制创建分支

1
svn copy https://example.com/MyRepo/trunk https://example.com/MyRepo/branches/MyNewBranch -m "Creating a new branch"

创建分支

1
2
3
4
5
6
7
8
9
# 创建分支,从主干创建一个分支保存到branches/online1.0
svn cp -m "描述内容" http://svnbucket.com/repos/trunk http://svnbucket.com/repos/branches/online1.0

# 合并主干上的最新代码到分支上
cd branches/online1.0
svn merge http://svnbucket.com/repos/trunk

# 分支合并到主干
svn merge --reintegrate http://svnbucket.com/repos/branches/online1.0

切换分支

1
2
3
4
5
# 切换当前项目到指定分支。服务器上更新新版本我们经常就用这个命令来把当前代码切换到新的分支
svn switch svn://svnbucket.com/test/branches/online1.0

# 重定向仓库地址到新地址
svn switch --relocate 原svn地址 新svn地址

删除分支

1
2
# 删除分支
svn rm http://svnbucket.com/repos/branches/online1.0

帮助

1
2
3
4
5
# 查看SVN帮助
svn help

# 查看指定命令的帮助信息
svn help commit

参阅官方文档:http://subversion.apache.org/quick-start
参阅掘金长者文章:https://juejin.im/post/6844903599630188552