Git是分布式版本控制系統,我們常用的版本控制工具還有SVN。這里就得區分下什么是分布式版本控制系統,什么是集中化的版本控制系統。
集中化的版本控制系統
集中化的版本控制系統( Centralized Version Control Systems,簡稱 CVCS )。這類系統,諸如 CVS,Subversion 以及 Perforce 等,都有一個單一的集中管理的服務器,保存所有文件的修訂版本,而協同工作的人們都通過客戶端連到這台服務器,取出最新的文件或者提交更新。


優點:
1. 每個人可以看到別人做了什么
2. 管理員管理權限也比較簡單
缺點:
依賴中央服務器,存在單點故障的風險。
1. 中央服務器宕機后,都無法協同工作
2. 如果中央服務器的文件損毀,又沒有備份時,丟失的數據無法找回
分布式版本控制系統( 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