版本控制你會選擇svn還是Git?

首發在簡書https://www.jianshu.com/p/cf6b676d8509

都2020了,怎麼還有人問我這個問題,哈哈哈哈。開個玩笑,對於版本管理,其實這兩個都是赫赫有名的工具。下面讓我來分別介紹一下,然後你再決定選擇用哪款。

SVN(Subversion的簡稱)

SVN是什麼

Subversion是一個開源版本控制系統。Subversion項目和軟件由CollabNet,Inc.於2000年成立,在過去十年中取得了令人難以置信的成功。在開源領域和企業界,Subversion一直享有並將繼續得到廣泛採用。是Apache軟件基金會下的一個項目。

SVN的特點

  • 集中式
  • 開源
  • 可靠性高
  • 模型和用法簡單
  • 支持個人使用和企業使用
    集中式管理

爲什麼要用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?

  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認識新朋友了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章