SVN
SVN 简介
Subversion(SVN) 是一个开放源代码的版本控制系统,也就是说 Subversion 管理着随时间改变的数据。 这些数据放置在一个中央资料档案库(repository) 中。 这个档案库很像一个普通的文件服务器, 不过它会记住每一次文件的变动。 这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史。
SVN 官网:https://subversion.apache.org/
Github SVN 源码:https://github.com/apache/subversion
SVN 的一些概念
- repository(源代码库):源代码统一存放的地方
- Checkout(提取):当你手上没有源代码的时候,你需要从repository checkout一份
- Commit(提交):当你已经修改了代码,你就需要Commit到repository
- Update (更新):当你已经Checkout了一份源代码, Update一下你就可以和Repository上的源代码同步,你手上的代码就会有最新的变更
日常开发过程其实就是这样的(假设你已经Checkout并且已经工作了几天):Update(获得最新的代码) –>作出自己的修改并调试成功 –> Commit(大家就可以看到你的修改了) 。
如果两个程序员同时修改了同一个文件呢, SVN可以合并这两个程序员的改动,实际上SVN管理源代码是以行为单位的,就是说两个程序员只要不是修改了同一行程序,SVN都会自动合并两种修改。如果是同一行,SVN会提示文件Confict, 冲突,需要手动确认。
在Ubuntu下安装
使用 apt-get 命令进行安装:
sudo apt-get install subversion
查询版本,验证是否安装成功。
svn --version
创建版本库
在服务器上创建一个属于我们自己控制版本的文件夹,设置好权限。
注:这里暂时不涉及服务器的搭建,等用到时再补充。可参考:https://www.linuxidc.com/Linux/2016-08/133961.htm
检出
svn checkout http://192.168.1.1:53301/svn/vslam
上传
将要上传的文件,比如my-slam
,移动到vslam
文件夹下。
上传my-slam
文件夹下的所有文件:
svn add my-slam/
当然,还可以上传单个文件或多个文件。
可通过以下命令查询文件状态,?
表示未上传,A
表示已上传。
svn status
提交
svn commit -m “注释信息”
版本回退
当我们想放弃对文件的修改,可以使用 svn revert 命令。
- 回退文件版本
svn revert file-name
- 回退目录版本
svn revert -R directory-name
- 恢复一个已经提交的版本
找到仓库的当前版本,比如是22,我们要撤销回之前的版本为 21。
svn merge -r 22:21 file-name
SVN 查看历史信息
通过svn命令可以根据时间或修订号去除过去的版本,或者某一版本所做的具体的修改。以下四个命令可以用来查看svn 的历史:
- svn log: 用来展示svn 的版本作者、日期、路径等。
- svn diff: 用来显示特定修改的行级详细信息。
- svn cat: 取得在特定版本的某文件显示在当前屏幕。
- svn list: 显示一个目录或某一版本存在的文件。
参考
[1] http://www.runoob.com/svn/svn-create-repo.html
[2] https://blog.csdn.net/chichoxian/article/details/52628786
Git
Git是目前世界上最先进的分布式版本控制系统(没有之一)。
安装与使用
- 在 Ubuntu 上安装Git
sudo apt-get install git
- 创建版本库
mkdir learngit
cd learngit
- 通过
git init
命令把这个目录变成Git可以管理的仓库:
git init
- 把文件添加到版本库
首先编写一个readme.txt
文件
git add readme.txt
- 用
git commit
命令告诉Git,把文件提交到仓库:
git commit -m "注释信息"
commit
可以一次提交很多文件:
git add file1.txt
git add file2.txt file3.txt
git commit -m "add 3 files."
- 版本回退
git log
命令显示从最近到最远的提交日志。
git log
首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD
表示当前版本,上一个版本是HEAD^
,上上一个版本就是HEAD^^
,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100
。
使用git reset
命令,把当前版本回退到上一个版本:
git reset --hard HEAD^
- Create a new repository
git clone http://***/***/test.git
cd test
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master
- Existing folder
cd existing_folder
git init
git remote add origin http://***/***/test.git
git add .
git commit -m "Initial commit"
git push -u origin master
- Existing Git repository
cd existing_repo
git remote rename origin old-origin
git remote add origin http://***/***/test.git
git push -u origin --all
git push -u origin --tags
参考
[1] https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
总结
SVN和Git是目前两个主流的版本控制工具,在工作和学习中可能都会用到。
作为入门级用户,先学会提交文件就行了,后续使用中需要用到什么再补充,所以本博客内容上并不全。
以上都是通过命令行操作的,其实还有图形化界面的软件可以使用,比如RapidSVN,但在功能上可能有些欠缺。