【GIT-精講】從零玩轉Git/GitHub/GitLab

關於版本控制

一、什麼是版本控制

  1. 版本控制(Version Control Systems)版本控制(Revision control)是一種軟件工程技巧

  2. 在開發的過程中,確保由不同人所編輯的同一檔案都得到更新

  3. 舉例
    我們通常都是手動的重命名一個文件進行備份的
    hello.java改成hello1.java或者hello.java.bak等形式
    然後這種方式對於單個文件我們還能夠管理,但是對於整個項目而言,就會成為噩夢了!!!

  4. 文件版本常見問題
    合併代碼
    兩個人寫的代碼如何合併到一起
    版本回退
    在寫代碼過程當中, 代碼出現錯誤,如如何才能加回到以前沒有錯誤的代碼

版本管理工具

集中式管理

特點

集中式版本
		控制系統,版本庫是集中存放在中央服務器的
		而幹活的時候,用的都是自己的電腦
		所以要先從中央服務器取得最新的版本,然後開始幹活,幹完活了,再把自己的活推送給中央服務器
		中央服務器就好比是一個圖書館
		你要改一本書,必須先從圖書館借出來,然後回到家自己改,改完了,再放回圖書館
結構圖

缺點
	集中式版本控制系統最大的毛病就是必須聯網才能工作
	所有的版本都在一個服務器上面
	如果服務掛了, 所有記錄的版本都沒了

分佈式管理

特點

​ 分佈式版本控制系統,則不需要中央服務器
​ 每個協同開發者都擁有一個完整的版本庫
​ 這麼一來,任何協同開發者用的服務器發生故障
​ 事後都可以用其它協同開發者本地倉庫恢復

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

二、git版本管理

git介紹

​ git是一款開源的分佈式版本管理工具,作者Linux之父-Linus
​ 當初Linus 僅僅是為了輔助Linux內核的開發才一併開發了這個至今為止世界上最快的、最簡單的版本管理工具

軟件安裝

去到官方網站下載GIT安裝包

//git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git

跟着步驟一步步來










三、安裝完畢之後介紹Git工作狀態、原理、工作流程

1. Git 管理項目時,文件流轉分為三個工作區域

Git 的工作目錄
暫存區域
以及本地倉庫

2. 對於任何一個文件,在 Git 內都只有三種狀態

3. 三種狀態

1.已修改(modified)
	已修改表示修改了某個文件,但還沒有提交保存
2.已暫存(staged)
	已暫存表示把已修改的文件放在下次提交時要保存的清單中
3.已提交(committed)
	已提交表示該文件已經被安全地保存在本地數據庫中了

4. 原理流程步驟

1. 工作目錄
	從項目中取出某個版本的所有文件和目錄,用以開始後續工作的叫做工作目錄
	這些文件實際上都是從 Git 目錄中的壓縮對象數據庫中提取出來的
	接下來就可以在工作目錄中對這些文件進行編輯
2. 暫存區域
	只不過是個簡單的文件
	.git目錄之下,名為index,它一般很小,一般不超過1KB左右
	一般都放在 Git 目錄中
	有時候人們會把這個文件叫做索引文件
	暫存區這個索引文件裏面包含的是文件的目錄樹,像一個虛擬的工作區,在這個虛擬工作區的目錄樹中,記錄了文件名、文件的時間戳、文件長度、文件類型以及最重要的SHA-1值,文件的內容並沒有存儲在其中
	暫存區的作用
		除非是繞過暫存區直接提交,否則Git想把修改提交上去,就必須將修改存入暫存區最後才能commit。每次提交的是暫存區所對應的文件快照
3. git目錄(本地倉庫)
	當我們在某個目錄下運行git init命令後,在該目錄下便會生成一個.git的子目錄,這個目錄是隱藏的。
	它是 Git 用來保存元數據和對象數據庫的地方,這個目錄可以說是Git的核心
	每次克隆鏡像倉庫時,實際上拷貝的這個目錄里的內容而已

5. 工作流程

1、在工作目錄中修改文件。
2、暫存文件,將文件的快照放入暫存區域。
3、提交更新,找到暫存區域的文件,將快照永久性存儲到Git倉庫目錄。

示圖:

        #### git add ---> git commit --- > git push/git pull

這一期的Git簡單介紹 就到這裡啦—下一章節 Git的基本操作