1.1 TortoiseSVN客户端常见操作指令
1.1.1 客户端常见图标
1.1.2 SVN Checkout[1]
是将SVN服务器的上的项目文件检出到本地工作副本,尤其是我们第一次从SVN上拉取版本和分支的时候会经常用到
(1)进入你想要拉取的本地文件夹目录,点击鼠标右键,选择“SVN Checkout”
(2)在弹出的对话框内,输入远端SVN的地址,以及本地要保存的目录,如果你想checkout某个具体版本,还可以在“Revision”里进行设置
(3)如果是第一次使用,可能会提示如下信息,告诉你的证书保存的时效性,我们选择上一项,永久保存。
(4)输入你的SVN用户名和密码,如果需要永久保存认证信息,可以勾选下方的“save authentication”
(5)此时,如果各项信息无误,SVN就会自动从远程服务端下载项目代码。
(6)下载完毕后,你就在本地目录发现你下载的项目代码。
1.1.3 SVN Update
将当前本地目录及其子目录下的所有文件都更新到最新版本
1.1.4 SVN Commit[2]
将代码提交到远程服务端
(1)选中需要更新的代码文件夹或目录,点击右键,选择“TortoiseSVN”–“Add”。
(2)此时SVN客户端会自动帮你识别出已经变更过的代码文件,可以根据自己的需要选择是否需要上传。
(3)选择“Ok”后会提示所有的文件已经“Add”成功了。
(4)再次回到第一步的目录,点击右键,选择“SVN Commit”
(5)在弹出的对话框的“Message”框内输入你此次代码变更的备注。
(6)点击“Ok”按钮,此时SVN开始将变更文件代码上传到SVN远程服务端
(7)再次会到刚才操作的目录,我们发现文件夹的状态标识也变成绿色的小勾了,此时代码已经提交成功了。
(8)提交完成后若想查看是否提交成功,可以在提交目录下右键 -> TortoisesSVN -> show log 查看代码提交记录,有提交记录即为提交成功。
1.1.5 SVN Delete
该删除是指从版本库中进行删除
选中需要删除的文件或文件夹,右键在TortoiseSVN中选择“Delete”命令
对于不需要删除的文件取消打钩
1.1.6 恢复到指定版本
工作副本右键->TortoiseSVN->show log->右键选择所需要的版本号->复原到此版本
1.1.7 版本融合
选择工作副本->TortoiseSVN->Merge
1.1.8 撤销本地所有修改
操作需要在commit操作之前使用,
1.1.9 协同办公
当多个人使用svn时,会出现对同一份文档有多个人进行编辑,然后将每个人编辑的内容融合在一起,这时在编辑时需要先更新最新的文件,然后将该文件进行锁定,在更新完内容之后再通过commit进行上传。
- SVN Update 更新文档到最新版本
- 锁定将要更新的文档:TortoiseSVN->Get lock
- 修改目标文件内容
- SVN Commit
- TortoiseSVN->Release lock
1.1.10文件冲突
1、文件冲突简介
指团队协同工作时,当多位团队成员同时修改同一个文件,造成本地文件与SVN系统中的文件版本不一致,而导致无法提交的情况。
遇到冲突时,文档显示为:
2、解决方式
面对文件冲突,我们可以选择以下两种方式解决冲突。
(1)使用工具解决冲突
1)选择文件-> TortoiseSVN->Edit conflicts
2)对比两个版本的文件,解决冲突
工具中会列出两个版本冲突的部分,并让我们选择使用哪个版本的内容
3)选择文件-> TortoiseSVN->Resolved
(2)使用revert放弃所做的修改
1.2 在linux系统下使用命令行进行操作
1.2.1 将文件checkout到本地目录
//[]中的内容可选
svn checkout [-r svn版本号] path
//示例:
svn checkout –r 2333 http://***/***/test
svn checkout http://***/***/test
1.2.2 向版本库中添加新的文件
svn add [filename] //将[filename]纳入到版本控制中
svn add [folder] //向版本库中添加文件夹,并将该文件夹下未纳入版本控制的文件一并纳入控制
svn add [folder] –non-recursive //只把目录纳入控制,而不想把所有该目录下的文件纳入控制,可以增加–non-recursive
svn add * //一次性增加所有,这种情况会排除non-recursive的目录下的文件
svn add * --force //一次性增加所有,包括non-recursive的目录下的文件
svn add . –no-ignore –force //遍历当前目录下所有未添加的文件,添加到版本控制中
1.2.3 将改动的文件commit到版本库
svn commit (-N) –m “log message” [filename]
//-N:只提交目录名字,不提交子目录及子目录下的内容
//示例:
svn commit –m “add test.cpp” test.cpp
1.2.4 加锁与解锁
svn lock -m “LockMessage“ [--force] PATH
svn unlock PATH
//示例:
svn lock -m “lock test file“ test.cpp
//修改结束后解锁
svn unlock test.cpp
1.2.5 查看文件或目录状态[3]
//目录下的文件和子目录的状态,正常状态不显示
//【?:不在svn的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K:被锁定】M状态一般比较多
svn status path
//显示文件和子目录状态
//第一列保持相同,第二列显示工作版本号,第三和第四列显示最后一次修改的版本号和修改人。
//svn status、svn diff和 svn revert这三条命令在没有网络的情况下也可以执行的,原因是svn在本地的.svn中保留了本地版本的原始拷贝
svn status -v path
1.2.6 查看文件详细信息
svn info path
//示例:
svn info test.cpp
1.2.7 比较版本差异
//将修改的文件与基础版本比较
svn diff path
示例:
svn diff test.cpp
//对版本m和版本n比较差异
svn diff -r m:n path
//示例:
svn diff -r 200:201 test.cpp
1.2.8 将文件更新到某个版本
svn update [-r version path/filename] //[ ]中的内容为可选项
//示例:
svn update //默认将当前目录以及子目录下的所有文件都更新到最新版本
svn update –r 200 test.cpp //将版本库中的文件test.cpp还原到版本200
svn update test.cpp //将test.cpp文件更新到最新
1.2.9 将两个版本之间的差异合并到当前文件
svn merge -r m:n path
//示例:
//将版本200与205之间的差异合并到当前文件,但是一般都会产生冲突,需要处理一下
svn merge -r 200:205 test.cpp
1.2.10 删除文件
svn delete [filename]
//示例:
svn delete test.cpp //删除test.cpp
svn ci –m “delete test.cpp” //提交更改
1.2.11 查看更新日志
svn log [path]
//示例:
svn log test.cpp //查看这个文件所有的修改记录和版本号变化
1.2.12 帮助
svn help
//示例:
svn help ci
参考链接
[1] https://jingyan.baidu.com/article/d621e8da10560f2864913f76.html
[2] https://www.cnblogs.com/ghjbk/p/7412916.html
[3] https://www.cnblogs.com/zhuwei0901-yanwu/p/9530697.html