Git是個好工具


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://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

 

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM