git 基礎及用法

一 git 簡介

1 歷史及由來

在 2002 年以前,世界各地的志願者把源代碼文件通過diff的方式發送給linus,然後由Linus本人通過手工方式合成代碼。但其工作量過於大,因爲代碼的數量已經很多了,於是Linus選擇了商用版的BitKeeper,BitKeeper的東家BitMover公司出於人道主義精神,授權Linux社區免費使用這個版本控制系統。
但大好局面在2005年就被打破了,原因是Linux社區牛人聚集,開發Samba的Andrew試圖破解BitKeeper的協議(這麼幹的其實也不只他一個),被BitMover公司發現了(監控工作做得不錯!),於是BitMover公司怒了,要收回Linux社區的免費使用權。

於是Linus花了兩週時間自己用C寫了一個分佈式版本控制系統,這就是Git!一個月之內,Linux系統的源碼已經由Git管理了!
Git迅速成爲最流行的分佈式版本控制系統,尤其是2008年,GitHub網站上線了,它爲開源項目免費提供Git存儲,無數開源項目開始遷移至GitHub,包括jQuery,PHP,Ruby等等。

2 分佈式和集中式

Linus 一直痛恨CVS和SVN 都是集中式的版本控制系統,而GIT 是分佈式版本控制系統

1 集中式

集中式版本控制系統:版本庫是集中存放在中央服務器的,而幹活的時候,用的都是自己的電腦,所以要先從中央服務器取得最新的版本,然後開始幹活,幹完活了,再把自己的活推送給中央服務器。中央服務器就好比是一個圖書館,你要改一本書,必須先從圖書館借出來,然後回到家自己改,改完了,再放回圖書館。
集中式版本控制系統最大的毛病就是必須聯網才能工作,如果在局域網內還好,帶寬夠大,速度夠快,可如果在互聯網上,遇到網速慢的話,可能提交一個10M的文件就需要5分鐘,這還不得把人給憋死啊。

2 分佈式

分佈式版本控制系統根本沒有“中央服務器”,每個人的電腦上都是一個完整的版本庫,這樣,你工作的時候,就不需要聯網了,因爲版本庫就在你自己的電腦上。既然每個人電腦上都有一個完整的版本庫,那多個人如何協作呢?比方說你在自己電腦上改了文件A,你的同事也在他的電腦上改了文件A,這時,你們倆之間只需把各自的修改推送給對方,就可以互相看到對方的修改了。

和集中式版本控制系統相比,分佈式版本控制系統的安全性要高很多,因爲每個人電腦裏都有完整的版本庫,某一個人的電腦壞掉了不要緊,隨便從其他人那裏複製一個就可以了。而集中式版本控制系統的中央服務器要是出了問題,所有人都沒法幹活了。

3 兩者比較

在實際使用分佈式版本控制系統的時候,其實很少在兩人之間的電腦上推送版本庫的修改,因爲可能你們倆不在一個局域網內,兩臺電腦互相訪問不了,也可能今天你的同事病了,他的電腦壓根沒有開機。因此,分佈式版本控制系統通常也有一臺充當“中央服務器”的電腦,但這個服務器的作用僅僅是用來方便“交換”大家的修改,沒有它大家也一樣幹活,只是交換修改不方便而已。

當然,Git的優勢不單是不必聯網這麼簡單,後面我們還會看到Git極其強大的分支管理,把SVN等遠遠拋在了後面。

CVS作爲最早的開源而且免費的集中式版本控制系統,直到現在還有不少人在用。由於CVS自身設計的問題,會造成提交文件不完整,版本庫莫名其妙損壞的情況。同樣是開源而且免費的SVN修正了CVS的一些穩定性問題,是目前用得最多的集中式版本庫控制系統。

除了免費的外,還有收費的集中式版本控制系統,比如IBM的ClearCase(以前是Rational公司的,被IBM收購了),特點是安裝比Windows還大,運行比蝸牛還慢,能用ClearCase的一般是世界500強,他們有個共同的特點是財大氣粗,或者人傻錢多。

微軟自己也有一個集中式版本控制系統叫VSS,集成在Visual Studio中。由於其反人類的設計,連微軟自己都不好意思用了。

分佈式版本控制系統除了Git以及促使Git誕生的BitKeeper外,還有類似Git的Mercurial和Bazaar等。這些分佈式版本控制系統各有特點,但最快、最簡單也最流行的依然是Git!

3 工作區和暫存區

1 工作區
如git 文件夾就是一個工作區
2 版本庫
工作區有一個隱藏目錄.git,這不算工作區,而是git的版本庫

git 的版本庫中存放了很多東西,其中最重要的就是稱爲stage(或者叫index)的暫存區,還有git 爲我們自動創建的第一個分支master,以及指向master 的一個指針叫HEAD
git 基礎及用法
git add 實際是把文件添加到暫存區
git commanf是提交更改,將暫存區的內容提交到當前分支。

二 基本配置

1 建立版本庫

git 基礎及用法
git 基礎及用法

2 編寫文件,此文件一定要在git子目錄下,git add 用命令告訴git,將文件添加到git倉庫

git 基礎及用法
git commit -m ** 及告訴git,將文件提交到倉庫
git 基礎及用法
git 基礎及用法

3 git 的相關操作及現象

git 基礎及用法
git 基礎及用法
?? 表示還沒提交到暫存區的數據
git 基礎及用法
A 表示已經提交到暫存區,但沒有提交到當前分支

git 基礎及用法
右邊M 表示在暫存區中修改了數據
git 基礎及用法
左邊M表示數據已經提交了但是修改了並且提交到了暫存區
git 基礎及用法
git 基礎及用法
git 基礎及用法
數據操作日誌的查看
git 基礎及用法
git 基礎及用法
git 基礎及用法
數據定義版本並通過版本進行數據回滾。
git 基礎及用法
git 基礎及用法
數據的刪除
git 基礎及用法
git 基礎及用法
git 基礎及用法

git 基礎及用法
git 基礎及用法

三 git 與 github 之間的操作

1 本地數據上傳

1 生成密鑰
git 基礎及用法
git 基礎及用法
git 基礎及用法
git 基礎及用法
git 基礎及用法
git 基礎及用法
2 創建一個目錄並將本地數據上傳至此目錄
git 基礎及用法
git 基礎及用法
git 基礎及用法
git 基礎及用法
git 基礎及用法

2 在GitHub上創建目錄並下載至本地

1 創建目錄
git 基礎及用法
git 基礎及用法
git 基礎及用法
2 下載至本地並查看
git 基礎及用法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章