Git 分佈式版本管理

Git是分佈式版本控制系統,咱們經常使用的版本控制工具還有SVN。這裏就得區分下什麼是分佈式版本控制系統,什麼是集中化的版本控制系統。html

集中化的版本控制系統git

集中化的版本控制系統( Centralized Version Control Systems,簡稱 CVCS )。這類系統,諸如 CVS,Subversion 以及 Perforce 等,都有一個單一的集中管理的服務器,保存全部文件的修訂版本,而協同工做的人們都經過客戶端連到這臺服務器,取出最新的文件或者提交更新。github

優勢:windows

1. 每一個人能夠看到別人作了什麼服務器

2. 管理員管理權限也比較簡單eclipse

缺點:分佈式

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

1. 中央服務器宕機後,都沒法協同工做學習

2. 若是中央服務器的文件損毀,又沒有備份時,丟失的數據沒法找回.net

分佈式版本控制系統

分佈式版本控制系統( Distributed Version Control System,簡稱 DVCS )。在這類系統中,像 Git,Mercurial,Bazaar 以及 Darcs 等,客戶端並不僅提取最新版本的文件快照,而是把代碼倉庫完整地鏡像下來。這麼一來,任何一處協同工做用的服務器發生故障,過後均可以用任何一個鏡像出來的本地倉庫恢復。由於每一次的提取操做,實際上都是一次對代碼倉庫的完整備份。

優勢:
1. 適合分佈式開發,強調個體

PS:容許支持上千個並行開發的分支
2. 公共服務器壓力和數據量都不會太大
3. 速度快、靈活

PS:特別在打分支和打Tag時候
4. 任意兩個開發者之間能夠很容易的解決衝突
5. 離線工做

PS:本地倉庫

缺點:
代碼保密性差,一旦開發者把整個庫克隆下來就能夠徹底公開全部代碼和版本信息

分支

Git最關鍵地方便是分支,分支意味着你能夠從開發主線上分離開來,而後在不影響主線的同時繼續工做。若是要了解Git,這個是最重要的,能夠查看下面學習資料。

 
學習資源

這一篇文章純粹只是記錄一些東西,並不會講Git的工做原理、怎麼用,由於資料已經很是完善了,使用到時查看便可。

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

http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013744142037508cf42e51debf49668810645e02887691000

2. 圖解Git/圖形化的Git參考手冊(瞭解原理很是有用)

http://blog.jobbole.com/22647/

3. Git官方教程(英文)

http://git-scm.com/blog

4. Git - 生成 SSH 公鑰

https://git-scm.com/book/zh/v1/服務器上的-Git-生成-SSH-公鑰

下載Git

1. window git安裝包

https://git-for-windows.github.io/

2. mac

Git安裝工具:http://sourceforge.net/projects/git-osx-installer/

經過Xcode安裝:Xcode->Preferences->Downloads,選擇「Command Line Tools」

Eclipse Git

我是個懶人,不喜歡打命令去操做Git,可視化操做纔是我想要的,因此就找了在Eclipse上使用Git方法。

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

http://yufenfei.iteye.com/blog/1750124/

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

http://www.xuebuyuan.com/1587775.html

總結

使用什麼版本控制工具,不管是集中式或分佈式,沒有誰絕對取代誰,存在都是緣由的,各有各自的適用場景。

附錄

下面記錄一些命令,來源於培訓教程
建立Git倉庫
初始化Git倉庫

$ git init  

配置用戶信息

$ git config user.name 'someGuy'
$ git config user.email 'someGuy@bingo.com'

添加文件
建立一個文件

$ touch README.md

查看倉庫當前狀態

$ git status

添加文件到暫存區

$ git add .

提交暫存區文件到倉庫

$ git commit -m 'add README.md file'

提交修改
將修改添加到暫存區

$ git add README.md

將暫存區中的修改提交到倉庫

$ git commit -m 'edit README.md'

撤銷
撤銷add到暫存區的操做

$ git reset HEAD README.md

撤銷對文件所作的修改

$ git checkout — README.md

將暫存區中的修改提交到倉庫

$ git commit -m 'edit README.md'

版本回滾
查看提交歷史記錄

$ git log

回到上次的提交

$ git reset --hard README.md

返回最近的提交

$ git reset --hard 0ff9

連接到遠程倉庫
添加遠程倉庫

$ git remote add origin git@git.bingosoft.net:gongke/GitLession.git

提交代碼到本地倉庫

$ git commit -a -m '將要提交到遠程'

將本地的master分支推送到遠程的origin分支,並與之創建鏈接

$ git push -u origin master

在分支上提交、合併分支
修改若干文件,提交

$ git commit

切換回master分支

$ git checkout master

合併分支

$ git merge dev

刪除分支

$ git branch -d dev

有衝突的合併
新建一個分支並切換到它

$ git checkout -b new_feature

合併分支

$ git merge new_feature

若沒有發生衝突則會自動生成一個提交若發生衝突,則須要手動解決衝突,再提交

$ git add conflict_filegit commit - m 'conflict solved'

打標籤
建立標籤

git tag v1.0
git tag -a v1.1 -m '1.1 released!'

查看標籤

git tag

刪除標籤

git tag -d v1.0

把標籤推送到遠程

git push  --tag
相關文章
相關標籤/搜索