學一點Git--20分鐘git快速上手

在Git如日中天的今天,不懂git都很差意思跟人說本身是程序猿。你是否是早就躍躍欲試了,只是苦於沒有藉口(契機)。 好吧,機會就在今天。 給我20分鐘,是的,只要20分鐘, 讓你快速用上git。html

咱們廢話很少說,直接來乾貨。linux

咱們將會介紹如下幾點:git

一, 什麼是gitgithub

二,使用git的通常開發流程數據庫

三,快速安裝新建項目。holloworld。windows

開始:緩存

一,什麼是git。安全

閱讀本文的前提是你知道或者用過至少一種源代碼管理工具,好比:SVN, CVS 或者TFS等等。 你必須知道什麼是源代碼管理。若是這些都不知足。請直接跳過本文。服務器

瞭解陌生事物的最好辦法,是和已知事物類比。 ---孔子分佈式

咱們以svn爲例。  咱們都知道傳統的源代碼管理都是以服務器爲中心的:

每一個開發者都直接連在中間服務器上, 本地修改,而後commit到svn服務器上。

這種作法看似完美,可是有致命的缺陷:

1. 開發者不能本地跟蹤代碼版本。 全部的信息都是在服務器上。  你把本地的代碼改了不少,可是又不能提交。一般,本地只能緩存一個版本。對於小項目無所謂, 可是項目一複雜,人員多就麻煩了。 一般你本地的代碼都全是紅色的。本身都不知道今天修改了什麼, 有哪些修改是真正應該提交給svn的。

2. 由於第一點,一旦離開服務器, 程序猿將沒法正常工做。 由於本地不能跟蹤代碼版本。  你的(幾乎)任何操做都必須連上服務器。好比, show log, blame,show history等等。

3. 中央服務器壓力過大。  由於每一個人都必須把代碼提交到服務器,而且作daily build。

4. 對於大型項目, svn幾乎不可用。 例如linux內核項目, 開發者何止幾萬? 都直接提交給svn服務器的話還不亂套了。

5. 對於我的的私人項目而言(或者對於小公司的項目), 不用版本控制固然不行,可是爲了用版本控制而專門架設svn服務器有有點捨不得。

有沒有能解決上述幾個問題的東東呢?  恩, 答案是確定的。

Linux內核的做者也遇到了這些問題,因而他決定再一次改變世界, 重寫一個能夠本地使用的svn。

對, 這就是git。  分佈式代碼版本管理系統。(說人話 :就是不用服務器的svn)

咱們來看git的結構:

git沒有中央服務器。 你裝上git軟件以後,你就能夠指定本地的文件夾進行版本控制了。你可拔掉網線,而後在本地修改, commit,revert(rollback), branch, restore, show log, blame, history 等等, 所有你以前在svn裏面能夠用的操做。 簡單的說,你就完美了。

 

你可能意識到一個問題了。   就是天下大亂了。

每一個人都自顧自的開發,怎麼協做呢?  恩,一般git比svn會多出兩個操做, 就是 pull 和push。

咱們看一個複雜一點的圖:

開發者之間經過 pull和push操做, 把別人的修改拉過來,或者把本身的修改推給別人。

恩,你可能仍是以爲有問題,咱們生產 環境中, 以誰的代碼爲最終版本呢? 

這個問題確實比較棘手,由於,從單純的技術上講,每一個開發者的機器都是對等的。 沒有主次之分。

咱們還有辦法:

技術上不能解決的問題,咱們從制度上解決. ---- 孟子

從分佈式環境中咱們模擬出一箇中心來:

咱們引入Leader這個角色。  他的機器是最終版本。 每一個開發者都必須把最終的修改版push給leader。 leader會review而後提交。他就是最終版本。

恩, 咱們好像還漏掉一個大問題, 說git,怎麼漏掉了github呢。 github是什麼。

咱們知道,若是每一個人都本地修改的話,本地可能不安全,(硬盤壞了,筆記本被偷了。。。。)

咱們可能須要一個安全的服務器來存儲/備份代碼。對於開源的項目,多是須要一個地方分享你的代碼,你不可能24小時開着筆記本,讓別人從你這pull代碼。

因而, 網上所謂的源代碼託管網站就冒出來了。 github就是這樣的。

看這個圖, 我只修改了其中一個地方, 就是把leader的機器換成了。 github.com 提供的在線帳戶。

因此, git和 github沒有必然聯繫。

這裏有幾個經常使用的在線託管地址, 有興趣本身看看:

1. github.com,  大名鼎鼎。 免費,只支持開源項目, 不支持私有項目。

2.  bitbucket.com ,一樣大名鼎鼎。 免費, 支持開源項目和私有項目。 免費用戶最多5個。項目無限。

3.   git.oschina.net, 國內頂尖託管平臺, 我本人正在用的就是這個。  支持開源項目和私有項目。 成員無限, 項目1000個。   使用的是阿里雲服務器, 速度極快。  本人推薦5顆星。

 

二, git開發的通常流程。

上面其實已經涉及了使用git的通常結構。 那麼生產環境中, git是如何應用的呢。

本人知道的模型以下:

 

每一個開發者都向本身的項目服務器(leader)提交代碼, leader向公司服務器提交。 固然這個leader是無關緊要的。若是項目小的話,  開發者能夠直接向公司服務器提交。  公司的服務器就是最終版本。  通常公司還會有持續集成CI服務器。  咱們能夠在公司的源碼服務器上設置git的hook。 自動觸發CI服務器工做。 這是後話,很少說了。

 

三,  前面的概念弄清楚以後, 上手就容易多了。 咱們helloworld。

1.   這是git的官網:http://git-scm.com/  去下載windows客戶端。

     若是是linux的話, sudo apt-get install gitcore

2.  注意, 官網的客戶端都是命令行的。 命令行是高階用法。不在這裏說了。 咱們下個gui。

我用的是TortoiseGit。  https://code.google.com/p/tortoisegit/  , 你們恐怕都熟悉svn時代的烏龜爬。上手快。 咱們下面的操做都是gui上的。

安裝過程不說了。 一路next。 咱們跳過。 直接到最後。假設你如今已經安裝完成了。

好比我已經有一個工程, helloworld:

這是工程文件的內部結構:

如今咱們想讓helloworld用上git怎麼作呢, 在工程根目錄下,點擊鼠標右鍵。

選擇 Create repository。

這個選項不要勾上。 稍後咱們會解釋什麼是 Bare。

而後就完成了。

裏面多出了一個 .git目錄。 當前的目錄(及其全部子目錄)已經在git的監視之中了。 可是當前的代碼尚未添加到git的跟蹤數據庫中。  簡單的說,git尚未儲存任何版本信息。 咱們須要進行第一次提交:

git默認你本地會有一個主分支master。

咱們寫一些註釋, 而且勾上想要添加到git的文件。 (若是有子目錄的話, 它都會顯示在這裏。)

提交完成, close。 這個push按鈕,稍後再說。

好了,這個時候咱們在回到文件夾,看看有什麼變化:

 

如今這些文件就添加進git了。

剩下的你就能夠隨心所欲了。 像svn同樣,本身試試幾個命令吧: 修改, difference, commit, revert,

到這你已經入門了。 

最後咱們來介紹兩個重要的概念。

1. 「git目錄」,   就是指上圖中,項目根目錄下生成的 「.git」 文件夾。  用過svn的同窗都知道, svn有‘.svn’文件夾。  他們的做用差很少。 這裏保存了git的本地數據庫資料。就是全部的版本信息。   跟svn不同的地方就是,git中,只有根目錄下有這個目錄, 全部的子目錄下都沒有, 也就是每一個工程只有一個.git目錄。

2.  「git工做目錄」, 其實就是你的工程目錄, 好比上圖中的工程根目錄:H:\mycode\helloworld\  。  爲何有這個工做目錄呢。 就是你工做在這個目錄下, 你能夠修改編輯裏面的文件,最後把修改提交給git目錄。  這個共工做目錄還有一個神奇的地方就是,  你能夠建立不一樣的branch(你默認工做在master下), 當你切換不一樣的branch時, 你的工做目錄(工程目錄)裏的全部文件都會變成當前branch對應的文件。 這個不展開了。

 

最後再解釋上面留下的兩個問題:

1. 「Bare」  建立Bare的意思是: 你只想要git的數據庫(即上圖中的 「.git」文件夾。), 而不想要當前的文件。 這一般用在公司的中央服務器上。 它不須要當前項目的實際代碼,只須要保留git數據庫信息就好了。

2. 在commit以後的對話框中的 push的意思。   正如以前介紹的。 push的意識是把你的修改push給別人(或者給公共服務器)。  commit的意思只是提交到本地的 .git 數據庫。 並無更新給別人。  因此提交完以後, 烏龜很貼心的給咱們一個push按鈕。 經過它你能夠快速把剛剛的修改push給別人,或者給服務器。 

 

總結, 這不是一本徹底的git手冊,但至少能讓你消除git恐懼症,快速入手。

 

這裏是gitbook的中文版: http://gitbook.liuhui998.com/  他是真正的大而全。 爲何最後才說它呢? 由於它就像是一本 牛津大辭典, 全面,權威。  可是對於幼兒園小朋友學英語,就不能一上來就背它吧。  先跟着別人說,上手要緊。   以後有什麼不會的,再去查字典。

 

好了。 就到這。 歡迎你們訪問個人我的獨立博客: http://blog.byneil.com  歡迎你們多多交流。

後面有時間的話,還想給你們分享一下我使用幾大源碼託管服務器的經驗。 但願你們頂啊。。。。

文章引用地址 : http://www.cnblogs.com/shuidao/p/3535299.html

相關文章
相關標籤/搜索