版本控制你会选择svn还是Git?

首发在简书:https://www.jianshu.com/p/cf6b676d8509

都2020了,怎么还有人问我这个问题,哈哈哈哈。开个玩笑,对于版本管理,其实这两个都是赫赫有名的工具。下面让我来分别介绍一下,然后你再决定选择用哪款。

SVN(Subversion的简称)

SVN是什么

Subversion是一个开源版本控制系统。Subversion项目和软件由CollabNet,Inc.于2000年成立,在过去十年中取得了令人难以置信的成功。在开源领域和企业界,Subversion一直享有并将继续得到广泛采用。是Apache软件基金会下的一个项目。

SVN的特点

  • 集中式
  • 开源
  • 可靠性高
  • 模型和用法简单
  • 支持个人使用和企业使用
    版本控制你会选择svn还是Git?_第1张图片

为什么要用SVN

咱们先来讲个故事

小蔡是个善于打篮球的作曲家,专门写歌词的,有一天他突发奇想,想要写一首关于篮球梦的词,于是乎打开了电脑,大刀阔斧的打着键盘,用了短短十天时间,终于写好了第一版的歌词,觉得自己萌萌哒.

于是乎吃了点小酒,灵感又爆发了,把之前写好的歌词又重新修改了一遍。第二天醒来发现不对啊,好像喝酒前的词儿写的篮球动作比较优美啊。于是乎想改回原来的词,却发现有一部分忘记了,词儿太多,没记住。于是小编就给他推荐了SVN,顺便教了一下他怎么用,趁机赚了一个篮球的费用,心里美滋滋的。

从上面这个故事我们粗略的了解到,SVN可以帮助我们找回之前写过的东西,这难道就是传说中的**后悔药**?

SVN的功能大概可以归纳为两个:
1. 文件服务器
2. 版本控制器

第一个功能有什么好处呢?

就是当小蔡的电脑死机了,不小心格式化了硬盘,不得不拿去电脑店让人家重装系统。此时之前写的绝美歌词就没了。但是如果使用了SVN服务器,每次写完歌词都往这SVN服务器上放,不管你是存了打篮球视频,还是歌词文件,还是精美照片,都可以在新电脑上重新下载回来,这就是文件服务器的功能。

第二个功能有什么好处?

上面那个故事已经说到了点皮毛,不是每个歌手都对自己第一次写的歌词就很满意的,他们会不断的修改不断的修改不断的修改,改得眼花缭乱的。可能改到第一千零一版的时候发现第九十九版的才是最好的,如果每个版本都上传到了SVN上面,那么想找回第九十九个版本的文件就好办了,只需要通知SVN,跟他说,给我拿第九十九个版本的歌词下来,我特别喜欢那个。它就屁颠屁颠的给你递过来了。

综上所述,小蔡从此就爱上了SVN,高兴地耍起了篮球。

怎么用SVN

SVN常用的操作有:添加文件或文件夹(add),提交文件(commit),删除文件(delete),检出文件(checkout)等操作,在这里只介绍几个常用的操作

  1. 当小蔡需要将歌词文件上传到SVN的时候就需要将这个文件进行add操作传至文件服务器中
  2. 当小蔡修改了歌词,想要把本地的文件更新到服务器上去,就需要进行commit操作,更新SVN的文件。
  3. 当小蔡彻底对这个歌词文件失望的时候,就可以delete这个文件。不想看到伤心的往事。
  4. 当小蔡电脑坏了,换了新电脑,想要拿回以前的文件,就可以通过checkout拿回以前上传的文件。perfect

SVN有什么缺点

  • 集中式存放,当SVN服务器挂了之后,记录同样会丢失。
  • 提交必须有网络连接,没有本地版本库。
  • 冲突解决是一个提交比赛,谁先提交谁安全,后提交有冲突就很麻烦,假如小蔡是和助理一起去改歌词文件的,助理改完之后提交了,然后小蔡改完之后也提交了,小蔡就遇到冲突了,这个时候小蔡还不得奔溃。

那么就有了以下Git的出现

GIT

Git是什么

官网说明:

Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.

Git is easy to learn and has a tiny footprint with lightning fast performance. It outclasses SCM tools like Subversion, CVS, Perforce, and ClearCase with features like cheap local branching, convenient staging areas, and multiple workflows.

翻译过来凑凑字数

Git是一个免费的开源 分布式版本控制系统,旨在快速高效地处理从小型到大型项目的所有内容。


Git 易于学习, 占用空间小,具有闪电般的快速性能。它具有Subversion,CVS,Perforce和ClearCase之类的SCM工具,具有廉价的本地分支,方便的暂存区域和 多个工作流等功能。
版本控制你会选择svn还是Git?_第2张图片

既生SVN,何生Git?

  1. Git版本库占用空间小,SVN每个分支都是一份文件的拷贝,而Git分支只是各个提交点的哈希值的集合。
  2. Git是分布式管理系统(就是说小蔡和助理的电脑其实也算是Git服务器,他们检出文件,其实就相当于备份了一份),我们完全可以不对文件进行备份(说是这么说,该备份还是要备份,嘿嘿)。SVN就不行了,硬盘一挂文件就消失了。
  3. Git很多操作可以在本地进行,不需要时时联网,并且会压缩文件,传输速度快;SVN是单个文件,传输速度慢(果然开发了个乌龟客户端是有道理的,嘿嘿)。

那么Git怎么用?

很简单,在本地电脑安装Git,下面列出常用操作命令

# 列出所有本地分支
$ git branch
 
# 列出所有远程分支
$ git branch -r
 
# 列出所有本地分支和远程分支
$ git branch -a
 
# 新建一个分支,但依然停留在当前分支
$ git branch [branch-name]
 
# 新建一个分支,并切换到该分支
$ git checkout -b [branch]
 
# 新建一个分支,指向指定commit
$ git branch [branch] [commit]
 
# 新建一个分支,与指定的远程分支建立追踪关系
$ git branch --track [branch] [remote-branch]
 
# 切换到指定分支,并更新工作区
$ git checkout [branch-name]
 
# 切换到上一个分支
$ git checkout -
 
# 建立追踪关系,在现有分支与指定的远程分支之间
$ git branch --set-upstream [branch] [remote-branch]
 
# 合并指定分支到当前分支
$ git merge [branch]
 
# 选择一个commit,合并进当前分支
$ git cherry-pick [commit]
 
# 删除分支
$ git branch -d [branch-name]
 
# 删除远程分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]

常见的Git仓库

  1. 国内的gitee(码云),可用于个人和企业协作,可建立私有仓库,很方便,小蔡也在用。
  2. 还有全球最火的gayhub github同性交友社区,小蔡也想上去认识新朋友。
  3. gitlab(自 2019 年 12 月 29 日起,此服务仅限科大校内用户注册,已有的用户不受影响。),不过可以进行私有部署,小蔡说以后成立了公司,也要自己搞一个,想上传什么就上传什么,嘿嘿。

就说这么多吧,我要带小蔡去gayhub认识新朋友了。

你可能感兴趣的:(工具篇)