天天看點

Git是個好工具

Git是分布式版本控制系統,我們常用的版本控制工具還有SVN。這裡就得區分下什麼是分布式版本控制系統,什麼是集中化的版本控制系統。

集中化的版本控制系統

集中化的版本控制系統( Centralized Version Control Systems,簡稱 CVCS )。這類系統,諸如 CVS,Subversion 以及 Perforce 等,都有一個單一的集中管理的伺服器,儲存所有檔案的修訂版本,而協同工作的人們都通過用戶端連到這台伺服器,取出最新的檔案或者送出更新。

Git是個好工具

優點:

1. 每個人可以看到别人做了什麼

2. 管理者管理權限也比較簡單

缺點:

依賴中央伺服器,存在單點故障的風險。

1. 中央伺服器當機後,都無法協同工作

2. 如果中央伺服器的檔案損毀,又沒有備份時,丢失的資料無法找回

分布式版本控制系統

分布式版本控制系統( Distributed Version Control System,簡稱 DVCS )。在這類系統中,像 Git,Mercurial,Bazaar 以及 Darcs 等,用戶端并不隻提取最新版本的檔案快照,而是把代碼倉庫完整地鏡像下來。這麼一來,任何一處協同工作用的伺服器發生故障,事後都可以用任何一個鏡像出來的本地倉庫恢複。因為每一次的提取操作,實際上都是一次對代碼倉庫的完整備份。

Git是個好工具

1. 适合分布式開發,強調個體

PS:允許支援上千個并行開發的分支

2. 公共伺服器壓力和資料量都不會太大

3. 速度快、靈活

PS:特别在打分支和打Tag時候

4. 任意兩個開發者之間可以很容易的解決沖突

5. 離線工作

PS:本地倉庫

代碼保密性差,一旦開發者把整個庫克隆下來就可以完全公開所有代碼和版本資訊

分支

Git最關鍵地方即是分支,分支意味着你可以從開發主線上分離開來,然後在不影響主線的同時繼續工作。如果要了解Git,這個是最重要的,可以檢視下面學習資料。

Git是個好工具

學習資源

這一篇文章純粹隻是記錄一些東西,并不會講Git的工作原理、怎麼用,因為資料已經非常完善了,使用到時檢視即可。

1. 廖雪峰Git教程(中文)

<a href="http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013744142037508cf42e51debf49668810645e02887691000">http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013744142037508cf42e51debf49668810645e02887691000</a>

2. 圖解Git/圖形化的Git參考手冊(了解原理非常有用)

<a href="http://blog.jobbole.com/22647/">http://blog.jobbole.com/22647/</a>

3. Git官方教程(英文)

<a href="http://git-scm.com/blog">http://git-scm.com/blog</a>

4. Git - 生成 SSH 公鑰

<a href="https://git-scm.com/book/zh/v1/%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84-Git-%E7%94%9F%E6%88%90-SSH-%E5%85%AC%E9%92%A5">https://git-scm.com/book/zh/v1/伺服器上的-Git-生成-SSH-公鑰</a>

下載下傳Git

1. window git安裝包

<a href="https://git-for-windows.github.io/">https://git-for-windows.github.io/</a>

2. mac

通過Xcode安裝:Xcode-&gt;Preferences-&gt;Downloads,選擇“Command Line Tools”

Eclipse Git

我是個懶人,不喜歡打指令去操作Git,可視化操作才是我想要的,是以就找了在Eclipse上使用Git方法。

1. Eclipse上安裝GIT插件EGit及使用

<a href="http://yufenfei.iteye.com/blog/1750124/">http://yufenfei.iteye.com/blog/1750124/</a>

2. 解決eclipse中egit中的cannot open git-upload-pack問題

<a href="http://www.xuebuyuan.com/1587775.html">http://www.xuebuyuan.com/1587775.html</a>

總結

使用什麼版本控制工具,無論是集中式或分布式,沒有誰絕對取代誰,存在都是原因的,各有各自的适用場景。

附錄

下面記錄一些指令,來源于教育訓練教程

建立Git倉庫

初始化Git倉庫

配置使用者資訊

添加檔案

建立一個檔案

檢視倉庫目前狀态

添加檔案到暫存區

送出暫存區檔案到倉庫

送出修改

将修改添加到暫存區

将暫存區中的修改送出到倉庫

撤銷

撤銷add到暫存區的操作

撤銷對檔案所做的修改

版本復原

檢視送出曆史記錄

回到上次的送出

傳回最近的送出

連結到遠端倉庫

添加遠端倉庫

送出代碼到本地倉庫

将本地的master分支推送到遠端的origin分支,并與之建立連接配接

在分支上送出、合并分支

修改若幹檔案,送出

切換回master分支

合并分支

删除分支

有沖突的合并

建立一個分支并切換到它

若沒有發生沖突則會自動生成一個送出若發生沖突,則需要手動解決沖突,再送出

打标簽

建立标簽

檢視标簽

删除标簽

把标簽推送到遠端

本文為原創文章,轉載請保留原出處,友善溯源,如有錯誤地方,謝謝指正。

本文轉自 海角在眼前 部落格園部落格,原文連結: http://www.cnblogs.com/lovesong/p/5042155.html ,如需轉載請自行聯系原作者