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://blog.jobbole.com/22647/
3. Git官方教程(英文)
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