SVN下载安装、SVN使用详细教程(Window+Linux)_svn linux还是windows-程序员宅基地

技术标签: Linux  运维  服务器  svn  

目录

SVN介绍

SVN中的一些概念:

SVN的优点:

Windows下SVN的使用

1. 了解 SVN 客户端、服务端

2. TortoiseSVN 介绍

3. Checkout检出代码

4. Update更新代码

5. Commit提交代码

6. 忽略文件

7. 撤销本地修改

8. 撤销已经提交的代码

9. SVN仓库目录和开发建议

10. 如何创建分支

11. 如何合并代码

12. 切换分支

13. 修改仓库地址

Linux下SVN的使用

1. 代码检出 checkout

2. 提交代码 commit

3. 更新代码 update

4. 添加文件 add及

5. 删除文件 delete

6. 查看日志 log

7. 查看变动 diff

8. 撤销修改 revert

9. 添加忽略 ignore

10. 查看状态 status

11. 清理 cleanup

12. 查看信息 info

13. 查看文件列表 ls

14. 查看文件内容

15. 查看 blame

16. 地址重定向

17. 分支操作

18. 帮助命令


SVN介绍

Subversion(SVN) 是一个开源的版本控制系統, 也就是说 Subversion 管理着随时间改变的数据。 这些数据放置在一个中央资料档案库(repository) 中。 这个档案库很像一个普通的文件服务器, 不过它会记住每一次文件的变动。 这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史。 

SVN中的一些概念:

  • repositoty (源代码库):源代码统一存放的地方
  • checkout (提取):当你手上没有源代码时,需要从repository checkout一份
  • commit(提交):当你已经修改了代码,你就需要commit到repository
  • update(更新):当你已经checkout了一份源代码,update一下你就可以核repository上的源代码同步,你手上的代码就会有最新的变更

如果两个程序员同时修改了同一个文件, SVN 可以合并这两个程序员的改动,实际上SVN管理源代码是以行为单位的,就是说两个程序员只要不是修改了同一行程序,SVN都会自动合并两种修改。如果是同一行,SVN 会提示文件 Conflict, 冲突,需要手动确认。

SVN的优点:

  1. 原子提交。一次提交不管是单个还是多个文件,都是作为一个整体提交的。在这当中发生的意外例如传输中断,不会引起数据库的不完整和数据损坏。
  2. 重命名、复制、删除文件等动作都保存在版本历史记录当中。
  3. 对于二进制文件,使用了节省空间的保存方法。(简单的理解,就是只保存和上一版本不同之处)
  4. 目录也有版本历史。整个目录树可以被移动或者复制,操作很简单,而且能够保留全部版本记录。
  5. 分支的开销非常小。
  6. 优化过的数据库访问,使得一些操作不必访问数据库就可以做到。这样减少了很多不必要的和数据库主机之间的网络流量。

Windows下SVN的使用

1. 了解 SVN 客户端、服务端

SVN 分为客户端、服务端,SVNBucket 就是一个 SVN 的服务端,负责托管 SVN 的代码。
我们需要使用 SVN 的客户端来跟服务端打交道。
在 Windows 上,我们推荐使用 TortoiseSVN,可视化的操作界面,集成右键菜单,非常方便。

2. TortoiseSVN 介绍

也叫乌龟SVN,是当前 Windows 上最流行的 SVN 客户端,没有基础的人也能快速的学会
如果你还没有 TortoiseSVN 可以查看 TortoiseSVN安装和汉化教程
更多其他 SVN客户端下载

下面我们就以 TortoiseSVN 作为客户端来讲解如何使用,服务端我们使用 SVNBucket

3. Checkout检出代码

  1. 在SVNBucket的项目详情-源码页面-复制SVN地址
  2. 在你需要保存代码的地方右键选择 SVN Chekout...
  3. 填写SVN地址,填写保存目录,输入SVNBucket网站登录用户名密码。
  4. 点击确定就能同步代码到本地了。

4. Update更新代码

右键 SVN Update 更新代码,这样就能把其他人提交的代码同步到自己电脑上了

5. Commit提交代码

提交代码也很简单,右键SVN Commit...,填入提交描述,就可以把本地提交的代码提交到服务器了。
在提交代码前我们应该update下代码,这是个好习惯,可以避免覆盖别人的代码和代码冲突。

6. 忽略文件

有时候某些目录或者文件我们不想提交到 SVN 服务器,这时我们可以忽略这些文件。
下面演示忽略 temp 目录和 *.map 文件

撤销忽略,文件的操作方式步骤是一样的,目录的有点不一样,请看下面演示

7. 撤销本地修改

有时候我们本地修改了一些文件,但是突然又不需要了,想丢弃本地的修改回去SVN上最新的版本怎么操作呢?
右键选中需要撤销的文件,TortoiseSVN->Revert 就可以丢弃本地修改了。

8. 撤销已经提交的代码

已经提交到SVN仓库的代码发现改错了,还能后悔撤回吗?

  1. 右键TortoiseSVN ==> show log 查看提交记录
  2. 选择我们需要回去的版本,右键选择Revert to this version,这样就回去了指定的版本
  3. 最后你还需要commit下撤销后的代码到SVN仓库

9. SVN仓库目录和开发建议

我们建议每个仓库的根目录都创建trunk、branches、tags目录,这是经典的 SVN 目录结构,方便开发和维护

个人比较喜欢的开发模式是,开发时都在trunk写代码,上线产品后就创建分支到branches目录,线上版本出问题了,我们应该在对应的分支上进行修复,并且把修复后的代码合并到主干上。

10. 如何创建分支

以上面的目录结构为例子,我们从当前主干创建一个分支出去,表示1.0版本,操作步骤如下:

  1. 右键 trunk 目录 => 右键TortoiseSVN => Branch/tag
  2. 填写分支路径/branches/online1.0,填写注释,选择最用最新的版本开分支,如下:

11. 如何合并代码

假设我们在分支上修复了一个线上的BUG,需要把代码那个代码合并到主干来,操作步骤:

  1. 在分支的跟目录点击show log
  2. 选中需要合并过去主干的提交记录(可以多选)
  3. 点击merge revision to ...
  4. 选择主干的跟目录,点击确定,就合并过去了。
  5. 在主干上提交这次合并的内容

SVN 的这个指定提交记录合并功能非常的方便,我们日常中经常会遇到线上出问题需要修复,修复后把代码合并到主干的情况。

注意:你在分支上的什么目录点击合并,那就需要定位到主干的对应目录合并,不然会出错。

另外如果你有大量的代码需要合并或者不知道哪些提交记录需要合并,可以使用Beyond Compare来进行对比合并,也是非常方便的,视频教程使用BeyondCompare做复杂代码合并

12. 切换分支

右键TortoiseSVN => Switch => 选择需要切换的分支,点击确定就可以了

13. 修改仓库地址

如果您的仓库地址变了,是不是需要重新checkout一份代码呢?

快速更换:右键点击仓库根目录 => TortoiseSVN => relocate,修改仓库地址,点击确定后就修改好了

如果还有不明白的地方,你还可以查看 SVN 视频教程

Linux下SVN的使用

1. 代码检出 checkout

这个命令会把 SVN 服务器上的代码下载到我们电脑上,checkout 也可以简写为 co

svn checkout svn://svnbucket.com/xxx/xxx
# 指定存储目录
svn checkout svn://svnbucket.com/xxx/xxx save-dir
# 指定用户名密码。
svn checkout svn://svnbucket.com/xxx/xxx --username xxxx --password xxx

2. 提交代码 commit

此命令可以把我们本地的修改提交到 SVN 服务器,这样其他同事就能更新到我们的代码了。
commit 可以简写为 ci,-m 参数后面跟的是本次提交的描述内容

# 描述是必须的,但是可以填写空字符串,不指定
svn commit -m "提交描述"
# 只提交指定文件或目录
svn commit /path/to/file-or-dir -m "提交指定文件"
# 指定后缀的所有文件
svn commit *.js -m "提交所有 js 文件"

3. 更新代码 update

执行此命令后会把其他人提交的代码从 SVN 服务器更新到我们自己电脑上,update 也可以简写为 up

# 更新到最新
svn update
# 更新到指定版本的代码。特别是最新版本代码有问题时,我们可以用这个命令回到之前的版本
svn update -r xxx 
# 仅更新指定文件或者目录
svn up /path/to/file-or-dir

4. 添加文件 add

新建的文件,我们需要用 add 命令把它们加入 SVN 的版本管理,然后我们才可以提交它。
注意:添加后还需要进行提交喔。

# 添加指定文件或目录
svn add /path/to/file-or-dir
# 添加当前目录下所有 php 文件
svn add *.php

5. 删除文件 delete

此命令会从 SVN 移除版本控制,移除后你需要提交一下

svn delete /path/to/file-or-dir
# 删除版本控制,但是本地依旧保留文件
svn delete /path/to/file-or-dir --keep-local

6. 查看日志 log

# 查看当前目录的日志
svn log
# 查看指定文件或目录的提交日志
svn log /path/to/file-or-dir
# 查看日志,并且输出变动的文件列表
svn log -v
# 限定只输出最新的 5 条日志
svn log -l 5

7. 查看变动 diff

# 查看当前工作区的改动
svn diff
# 查看指定文件或目录的改动
svn diff /path/to/file-or-dir
# 本地文件跟指定版本号比较差异
svn diff /path/to/file-or-dir -r xxx
# 指定版本号比较差异
svn diff /path/to/file-or-dir -r 1:2 

8. 撤销修改 revert

# 撤销文件的本地修改
svn revert test.php
# 递归撤销目录中的本地修改
svn revert -R /path/to/dir

9. 添加忽略 ignore

SVN 的忽略是通过设置目录的属性 prop 来实现的,添加后会有一个目录属性变动的修改需要提交,记得要提交一下喔,这样其他人也有了这个忽略配置。

# 忽略所有 log 文件。注意最后有个点号,表示在当前目录设置忽略属性。
svn propset svn:ignore "*.log" .
# 递归忽略 global-ignores
svn propset svn:global-ignores "*.log" .
# 从文件读取忽略规则,一行一个规则。
svn propset svn:ignore -F filename.txt .
# 打开编辑器修改忽略属性
svn propedit svn:ignore .
# 查看当前目录的属性配置
svn proplist . -v
# 删除当前目录的忽略设置
svn propdel svn:ignore .

忽略仅对还未添加到版本库的文件生效,已经在版本库里的文件,添加忽略后是不会自动删除的也不会忽略,需要手动 delete 命令删除下才行。

TortoiseSVN 添加忽略会更加简单,也会自动执行删除命令。

10. 查看状态 status

任何时候,你可以用下面的命令查看当前工作目录的 SVN 状态喔,会列出来哪些文件有变动。

svn status
svn status /path/to/file-or-dir
#也可以简写为 svn st

11. 清理 cleanup

这个命令我们经常在 SVN 出现报错时可以执行一下,这样就会清理掉本地的一些缓存

svn cleanup

12. 查看信息 info

svn info

13. 查看文件列表 ls

svn ls 
# 指定版本号
svn ls -r 100

14. 查看文件内容

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

15. 查看 blame

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

svn blame filename.php

16. 地址重定向

如果你的 SVN 地址变了,不需要重新 checkout 代码,只需要这样重定向一下就可以了。

svn switch --relocate 原 SVN 地址 新 SVN 地址

17. 分支操作

# 创建分支,从主干 trunk 创建一个分支保存到 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
# 切换分支
svn switch svn://svnbucket.com/test/branches/online1.0
# 删除分支
svn rm http://svnbucket.com/repos/branches/online1.0

18. 帮助命令

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

 19.取消add之后的文件

svn revert ./file1.sv    ;  svn revert --depth=infinity ./dir1/


参考文章:

https://www.runoob.com/svn/svn-intro.html

https://svnbucket.com/posts/svn-commands-tutorial/

https://svnbucket.com/posts/svn-tutorial/

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zhangduang_KHKW/article/details/121747868

智能推荐

学习C++的第一步,环境搭建:Visual Studio的安装和创建C++项目_visual studio c++安装教程-程序员宅基地

文章浏览阅读9.7k次,点赞8次,收藏39次。无论学习任何语言,首先要有编译环境,这里介绍Visual Studio的安装和使用,作为后面C++学习的环境。当然,除了Visual Studio,还有qtcreater、vscode等IDE可以使用,可以根据自己的喜欢安装对应的软件。下面对Visual Studio的安装进行一个详细说明,对具体版本没有限制。_visual studio c++安装教程

有关SAP中等于空的问题_sap 固定值 為空-程序员宅基地

文章浏览阅读2.1k次。20.17. 表字段初始值、NULL等问题20.17.1. SE11表设置中的Initial Values如果一个表是新创建的,数据库中的所有字段都会被设计成非NULL,此时与钩不钩上“Initial Values”框没有关系,且都会设置默认值,并且所有的主键都会强制将“Initial Values”框钩上该标示只在修改表结构且在现有表结构增加一个字段时,才起..._sap 固定值 為空

[C/C++ -STL]vector底层实现机制刨析-程序员宅基地

文章浏览阅读7.2k次,点赞17次,收藏30次。一、vector底层实现机制刨析通过分析 vector 容器的源代码不难发现,它就是使用 3 个迭代器(可以理解成指针)来表示的:其中statrt指向vector 容器对象的起始字节位置;finish指向当前最后一个元素的末尾字节end_of指向整个 vector 容器所占用内存空间的末尾字节。如图 演示了以上这 3 个迭代器分别指向的位置如图 演示了以上这 2个迭代器分别指向的位置在此基础上,将 3 个迭代器两两结合,还可以表达不同的含义,例如:start 和 finish 可以用来表_vector底层实现

搭建5个节点的hadoop集群环境(CDH5)-程序员宅基地

文章浏览阅读1.9k次。提示:如果还不了解Hadoop的,可以下查看这篇文章Hadoop生态系统,通过这篇文章,我们可以首先大致了解Hadoop及Hadoop的生态系统中的工具的使用场景。搭建一个分布式的hadoop集群环境,下面是详细步骤,使用cdh5 。一、硬件准备基本配置:操作系统64位CPU(英特尔)Intel(R_cdh5

fxfactory卸载不干净?Fxfactory及插件卸载教程_fxfacory的插件有时候能用有时候用不了-程序员宅基地

文章浏览阅读432次。fxfactory是一款非常受欢迎的视频特效插件合集,能应用到FCPX、AE、PR、motion等软件中。过多特效插件下载会导致这些软件运行打开速度慢,那么如何卸载fxfactory这款软件或者删除那些特效插件呢?跟随小编一起来看看吧!fxfactory中插件删除教程打开fxfactory 软件,在Installed处找到已经安装过的插件,比如安装好的Caption Burner插件去掉勾选,插件颜色变黑白即可运行FCPX、AE、PR、motion等软件,Caption Burner就不会出现了,影响软件_fxfacory的插件有时候能用有时候用不了

Windows系统设置每天自动备份指定文件并自动删除七天前的文件(脚本+Windows任务计划)_ms-dos七天自动删除-程序员宅基地

文章浏览阅读8.3k次,点赞8次,收藏41次。Windows系统设置每天自动备份指定文件并自动删除七天前的文件(脚本+Windows任务计划)在生活中和工作中有时候为了避免电脑宕机导致文件丢失常常会使用一些方式去备份文件,今天小编给大家介绍一个方法,用于自动备份指定文件,并删除N天前的文件。_ms-dos七天自动删除

随便推点

清空数据库的方法_548数据库清库-程序员宅基地

文章浏览阅读744次。近来发现数据库过大,空间不足,因此打算将数据库的数据进行全面的清理,但表非常多,一张一张的清空,实在麻烦,因此就想利用SQL语句一次清空所有数据.找到了三种方法进行清空.使用的数据库为MS SQL SERVER.1.搜索出所有表名,构造为一条SQL语句declare @trun_name varchar(8000)set @trun_name=''select_548数据库清库

STL --- 四、算法 Algorithms_c++ algorithms-程序员宅基地

STL中的算法提供了丰富的功能,包括常用算法介绍和时间、空间复杂度的选择。在编写程序时需根据具体问题选择适当的算法,满足时间或空间需求。

【计算机网络学习笔记04】网络体系架构与网络协议_网络体系以及网络协议的定义和内容。-程序员宅基地

文章浏览阅读1.4w次。【计算机网络学习笔记04】网络体系架构与网络协议一、网络协议的概念和要素网络协议是计算机网络相互通信的对等层实体之间,用来交换信息时必须遵守的规则或约定的集合。这些为网络数据交换而制定的通信规则、约定与标准被统称为网络协议,简称协议。网络协议主要由三个基本要素组成,分别是语法、语义和时序。语法:用于定义数据和控制信息的结构或格式。语义:用于解释数据或控制信息的具体含义。时序(同步):用于对事件实现顺序的详细说明。二、计算机网络体系结构计算机网络各层、层中协议以及层间接口的集合(即网络层次_网络体系以及网络协议的定义和内容。

【测试】echo发送和接收TCP/UDP数据包|shell 发送TCP/UDP数据包_shell脚本接收udp-程序员宅基地

文章浏览阅读7.6k次,点赞2次,收藏14次。目录通过/dev/tcp、/dev/udpshell给tcp或udp服务发送16进制报文指令通过/dev/tcp、/dev/udp(https://blog.csdn.net/u010039418/article/details/86251470)通过/dev/tcp、/dev/udp可以直接在shell脚本中发起tcp、udp连接,方便又高效,平时用于测试啥的还是挺方便的。直接发送格式 /dev/udp/ip/port比如要向本地10001端口发送数据,可以使用ec._shell脚本接收udp

Pytorch学习笔记09——多分类问题_pytorch normalize mean, std-程序员宅基地

文章浏览阅读639次,点赞2次,收藏5次。pytorch多分类问题_pytorch normalize mean, std

学习open62541 --- [15] 使用建模工具UaModeler-程序员宅基地

文章浏览阅读1.2w次,点赞120次,收藏55次。讲述如何使用建模工具UaModeler_uamodeler

推荐文章

热门文章

相关标签