天天看點

Git學習筆記(一)——Git基礎一、環境搭建二、Git簡介三、Tortoisegit基本使用四、分支管理五、團隊協作

寫在前面:由于對文檔和代碼的管理感覺到特别的頭疼,是以開始學習Git,過程裡參考了很多其他的部落格,這篇文章作為學習記錄,有些圖檔來自于其他的大牛們,就不一一列舉了,在此感謝感謝感謝大家。

一、環境搭建

       Windows 10、Tortoise 2.6、GitBlit 1.8

二、Git簡介

       首先,我們先一起來回想一下平時我們寫程式的場景。第一天,寫了一個程式經過n次的調試輸出之後得到了正确結果,儲存第一天的代碼,标記上v0.0。第二天,覺得這個程式可以優化,于是打開編輯器,關閉聊天工具,着手開始修改,經過反複的修改删除黏貼之後,完成了第二天的修改,心情特别的好,迅速儲存完代碼,标記上v0.1就去開黑了。第三天,覺得前幾天的輸出格式有點醜,決定做個UI界面,加個特效,于是又打開編輯器,關閉聊天工具,“噔噔噔”開始改代碼了,幾個小時以後,長舒一口氣,看着新的界面,結束了第三天的修改,儲存第三天代碼,标記上v0.3。第四天,仔細想一想還是第一個天的算法更适合項目一些,于是找出第一天的v0.0版本,把代碼拷貝到v0.3版本裡,修改完成,儲存為v0.4……經過一兩個星期以後,摸摸自己的頭發,照照鏡子,決定結束項目,這個時候發現代碼自己存的代碼特别多,版本特别多,每個版本自己改動了哪裡好像也不是記得特别清楚了,這個時候怎麼了呢?于是看看表,也就還是22:00,兩個小時肯定可以确定一個釋出版本,于是又開始改代碼了。兩個小時以後,成功完成了修改,開開心心的去睡覺了。

      這裡使用的是人工的方式進行代碼版本管理,一個人獨自工作的時候這也挺好的,似乎沒有什麼問題,當需要和其他人一起開發的時候,這個方式就不适用了。比如:一個三人開發小組,小組成員負責的子產品不一樣,每天寫完代碼以後各自儲存各自的代碼,經過一段時間以後,最開始所有人相同的demo就有了三個DIY版本,并且整個三個人的代碼也可能出現一些麻煩。

       這個時候就有人想出了一個處理方案:建立一個中央倉庫,所有人每天先下載下傳中央倉庫的代碼,寫完代碼之後,再把代碼上傳到中央倉庫,這樣每個人每天拿到的代碼都是一緻的,解決了協作的問題。當然這裡需要保證每個人上傳的時候合并自己的代碼與中央倉庫的代碼,更新中央倉庫的代碼。這就誕生了集中式的VCS(Version Control System),常見的有:CVS、SVN等

       集中式的VSC雖好,但是同時也存在這一個缺點,版本庫集中存放在中央伺服器,網絡的延遲常造成下載下傳阻塞,并且一旦中央伺服器出現問題,所有人都無法繼續進行開發了,所有與之對應的就有分布式的VCS,目前最先進的就是Git。

       Git作為Linux之父Linus牽頭着手開發的産品,優點在此就不贅述了,分布式VCS中,每個終端儲存了倉庫的一個副本,也就是說無論是否有網絡都可以進行開發,進行代碼的管理,及時你的倉庫誤删了,也可以在其他人的電腦克隆一份,具體這個友善在哪裡,用了就知道了。

       Git(讀音為/gɪt/。)是一個開源的分布式版本控制系統,可以有效、高速的處理從很小到非常大的項目版本管理。 Git 是 Linus Torvalds 為了幫助管理 Linux 核心開發而開發的一個開放源碼的版本控制軟體。   ——《百度百科》

三、Tortoisegit基本使用

1、建立版本庫

       在本地建立版本庫的方式有兩種,一種是在一個空檔案夾下,右鍵選擇Create repository here,如圖所示。

Git學習筆記(一)——Git基礎一、環境搭建二、Git簡介三、Tortoisegit基本使用四、分支管理五、團隊協作
Git學習筆記(一)——Git基礎一、環境搭建二、Git簡介三、Tortoisegit基本使用四、分支管理五、團隊協作

第二種方式是在空檔案夾下,克隆遠端倉庫中已建好的版本庫。

Git學習筆記(一)——Git基礎一、環境搭建二、Git簡介三、Tortoisegit基本使用四、分支管理五、團隊協作
Git學習筆記(一)——Git基礎一、環境搭建二、Git簡介三、Tortoisegit基本使用四、分支管理五、團隊協作
Git學習筆記(一)——Git基礎一、環境搭建二、Git簡介三、Tortoisegit基本使用四、分支管理五、團隊協作

倉庫建立後預設建立了master分支,還有.gitignore與README,一個是記錄Git忽略倉庫中哪些檔案的配置檔案,另一個是寫個閱讀者的注釋檔案。所有的檔案可在日志(log)中檢視到倉庫的變化情況,如下圖所示,此時master分支剛剛建立。

Git學習筆記(一)——Git基礎一、環境搭建二、Git簡介三、Tortoisegit基本使用四、分支管理五、團隊協作

2、送出和推送

       添加 Add:把檔案存放到緩存區。

       送出 Commit:把檔案存放到本地倉庫。

       推動 Push:把檔案存放到遠端倉庫。

       在Git的版本庫分為本地倉庫,遠端倉庫。本地倉庫(Local Repository)即儲存在本機的倉庫,遠端倉庫即遠端的倉庫,對于本機來說,其他不儲存在本地的倉庫都可以成為遠端倉庫,是以本機的本地倉庫,對于其他使用者來說也是他們的遠端倉庫。

       此外,在平時還會提到暫存區(stage或index)與工作區。工作區即平時我們在資源浏覽器看到的檔案夾和檔案夾裡的檔案。暫存區儲存在工作區的.git檔案夾下,是一個隐藏檔案夾,它與分支類似,用于臨時儲存我們送出到倉庫的檔案。

Git學習筆記(一)——Git基礎一、環境搭建二、Git簡介三、Tortoisegit基本使用四、分支管理五、團隊協作

在Tortoisegit中相應的按鈕,如下圖所示。

Git學習筆記(一)——Git基礎一、環境搭建二、Git簡介三、Tortoisegit基本使用四、分支管理五、團隊協作

到此,最近本基本的的工作流程就可以了解了。

Step1:在本機建立倉庫。

Step2:寫代碼。

Step3:通過Add指令,把檔案添加到暫存區。

Step4:通過Commit指令,把檔案送出到倉庫。

Step5:通過Push指令,把本地倉庫推送到遠端倉庫。

四、分支管理

       Git最顯著的一個特點就是提供了強大的分支管理,我們可以自由的建立分支。此處直奔團隊合作的模式,簡述一下分支。

       在我們建立版本庫之後,每次的送出Git會記錄下來,畫成節點圖的方式便是一條時間線,我們稱呼它為分支(brench),建立其他的分支的時候,會根據目前分支最近一次送出建立一個完全相同的節點,并與目前分支并列在相同的級别。

Git學習筆記(一)——Git基礎一、環境搭建二、Git簡介三、Tortoisegit基本使用四、分支管理五、團隊協作

       Tortoisegit中建立、切換、合并分支都有對應的按鈕,如下圖所示。

Git學習筆記(一)——Git基礎一、環境搭建二、Git簡介三、Tortoisegit基本使用四、分支管理五、團隊協作

五、團隊協作

       團隊協作有多種工作流,常見的有GitFlow工作流、Forking工作流等。

1、集中式工作流

Git學習筆記(一)——Git基礎一、環境搭建二、Git簡介三、Tortoisegit基本使用四、分支管理五、團隊協作

       集中式工作流中,常見本地的master分支沒有更新導緻更新失敗的問題,這是需要先通過pull指令更新本地的master分支,再推送到服務端。

Git學習筆記(一)——Git基礎一、環境搭建二、Git簡介三、Tortoisegit基本使用四、分支管理五、團隊協作

2、GitFlow工作流

采用多個分支進行管理,各個分支有着各自的意義。

       master分支:穩定分支,用于儲存已釋出新版本。

       dev分支:工作分支,用于日常統一合并代碼的分支。

       fearture分支:開發分支,用于小組成員各自方向的開發。

       release分支:釋出分支,用于釋出新版本。

       hotfixes分支:修複分支,用于緊急修複bug。

Git學習筆記(一)——Git基礎一、環境搭建二、Git簡介三、Tortoisegit基本使用四、分支管理五、團隊協作

3、Forking工作流

        在服務端有一個正式倉庫,還有服務端個人倉庫,這裡代表着每個成員有2個倉庫,一個本地私有的倉庫,一個遠端的公開倉庫(區分之前的遠端倉庫概念)

Git學習筆記(一)——Git基礎一、環境搭建二、Git簡介三、Tortoisegit基本使用四、分支管理五、團隊協作

4、Pull Requests

       Pull requests讓開發者更友善地進行協作的功能,提供了友好的Web界面可以在提議的修改合并到正式項目之前對修改進行讨論。

Git學習筆記(一)——Git基礎一、環境搭建二、Git簡介三、Tortoisegit基本使用四、分支管理五、團隊協作