SVN 命令
本文最后更新于:2024年9月8日 晚上
SVN 命令
checkout/co
1
| $ svn checkout svn://ip/svn/project_repo --username=username ./
|
1 2 3 4 5
| $ svn checkout svn://192.168.0.1/helloworld --username=user01 ./ A helloworld/trunk A helloworld/branches A helloworld/tags Checked out revision 1.
|
- 检出成功后在当前目录下生成名为helloworld的工作副本。
- 版本控制相关操作都需要在工作副本目录下执行,例如:提交,更新等等这样的操作。
- 为了保证工作副本能够正常和服务器进行交互,请不要删除或修改.svn目录中的内容。
status
1 2
| $ svn status ? hello.txt
|
- 如果状态为
?
,则说明它还未加到版本控制中。
- 如果状态为
A
,则说明它已经加到版本控制中。
add
- 此时
hello.txt
的状态为 A
,意味着这个文件已经被成功地添加到了版本控制中。
commit/ci
1
| $ svn commit -m "message"
|
commit -m
:注释信息,如果你忽略了-m
选项,SVN会打开一个可以输入多行的文本编辑器来让你输入提交信息。
log
1 2
| $ svn log $ svn log -r 开始版本号:结束版本号。
|
-r
:如果只希望查看特定的某两个版本之间的信息,可以携带 -r 开始版本:结束版本
参数。
list
- 在不下载文件到本地目录的情况下来查看版本库中的文件:
1 2 3 4 5
| $ svn list http://192.168.0.1/helloworld README branches/ clients/ tags/
|
cat
1
| $ svn cat -r 版本号 rule.txt
|
diff
检查本地修改
- 如果用 svn diff,不带任何参数,它将会比较你的工作文件与缓存在
.svn
的原始拷贝。
1 2 3 4 5 6 7 8 9 10
| $ svn diff
@@ -1,4 +1,5 @@ Be kind to others Freedom = Responsibility Everything in moderation -Chew with your mouth open
|
比较工作拷贝和版本库
- 比较你的工作拷贝和版本库中版本号为 3 的文件 rule.txt
1
| $ svn diff -r 3 rule.txt
|
比较版本库与版本库
- 通过 -r(revision)传递两个通过冒号分开的版本号,这两个版本会进行比较。
- 比较 svn 工作版本中版本号2和3的这个文件的变化。
1
| $ svn diff -r 2:3 rule.txt
|
update/up
revert
1 2
| $ svn revert 文件名。 $ svn revert -R 目录名。
|
实例
- 这时发现修改错误,要撤销修改,通过revert回归到未修改状态。
1 2
| $ svn revert readme Reverted 'readme'
|
merge
- 对于已经提交的修改,我们需要使用
merge
命令撤销旧版本里的所有更改然后提交一个新版本,同时需要携带 -r
参数。
1
| $ svn merge -r 最新版本号:目标版本号目录名或文件名。
|
实例
- 首先,找到仓库的当前版本,现在是版本 22,我们要撤销回之前的版本,比如版本 21
1
| svn merge -r 22:21 readme
|
copy
- 拷贝工作拷贝的一个文件或目录到版本库,
SRC
和DST
既可以是工作拷贝(WC)路径也可以是URL:
- WC -> WC:拷贝并且预定一个添加的项目(包含历史)
- WC -> URL:将WC或URL的拷贝立即提交。
- URL -> WC:检出URL到WC,并且加入到添加计划。
- URL -> URL:完全的服务器端拷贝,通常用在分支和标签。
- 注意:你只可以在单个版本库中拷贝文件,Subversion还不支持跨版本库的拷贝。