1. 程式人生 > >Git詳細教程

Git詳細教程

變量 版本控制 為什麽 點擊 臨時 每次 ase 出現 註意

分布式版本控制系統--git

一.什麽是Git

1.Git是什麽

Git是目前世界上最先進的分布式版本控制系統(沒有之一)。

實際上版本控制系統有如下幾個:

1) CVS

2) SVN

3) Git

這個概念中有兩個疑問:

1. 什麽是版本控制

2.什麽是分布式?

2.為什麽需要Git

大家熟悉的一個場景:論文

技術分享

類似的場景,在軟件開發中更為普遍。

分組完成項目的時候

1)多人協作,是如何完成的?

2)開發自己的任務的時候,從寫第一行代碼開始到整個結束,有沒有來回修改?

如何來解決這些問題呢?

早期,在項目規模還沒有那麽大的時候,大家制定一些規則,手動解決就行。

隨著軟件和項目規模的增大,這種手動方式,效率太低,問題太多,不能滿足開發的需求。

需要有相應的工具來解決 --- 於是就出現了 版本控制系統。

1)CVS,功能比較弱,現在很少使用

2)SVN,功能比較完善,使用比較多

3)Git,功能最強大的,也是最受歡迎的。

技術分享

所以,版本控制可以幫助我們實現兩件事情:

1)自動記錄每次的修改,並且可以方便的切換到任一版本

2)可以完成多人協作開發

3.GitGitHub有何區別

Git,是一個版本控制系統,實際上是一個工具,大多數都是基於命令行的。

GitHub,是一個使用Git作為版本控制的托管代碼的網站,平臺

重點在於學習Git本身。

二.快速入門

1.安裝Git

Git在多個操作系統均有相應的安裝包。

使用windows系統。

還是一個典型的windows軟件的安裝

官網:https://git-scm.com/downloads/

技術分享

技術分享

技術分享

這個表示加入了windowspath變量,意味著可以在cmd窗口中使用。

安裝完成之後,我們可以在任意目錄下,點擊鼠標右鍵,彈出右鍵菜單,有兩個選項:

1.Git GUI Here

2.Git bash Here

Git GUI here,其實就是一個可視化的界面,使用鼠標就可以完成相應操作。如下:

技術分享

Git bash Here

命令行窗口

技術分享

2.使用流程

基本的使用流程如下:

1)初始化一個Git倉庫(git init

2)設置用戶名和郵箱

3)添加文件到倉庫(git add 文件名

1 文件名2

4) 提交 git commit -m 說明文字)

5)查看版本 git log

6)回退 git reset --hard HEAD^/commit_id

(1).初始化一個Git倉庫(git init

首先,需要指定我們的項目目錄,比如此處放在project目錄下,

使用git init 來初始化一個Git倉庫。

在當前目錄下打開 git bash 窗口,輸入git init命令,如下:

技術分享

repository: 倉庫

相應的,會在當前目錄下,創建一個隱藏的.git目錄,

我們在開發的時候,是不能去動這個目錄的。

如下:

技術分享

(2).設置用戶名和郵箱

技術分享

使用

git config user.name 用戶名

git config user.email 郵箱

(3).添加文件到倉庫(git add 文件名1 文件名2

我們需要在project目錄下,開始開發。

技術分享

使用 git add 文件名,將其添加到版本庫

技術分享

(4).提交 git commit -m 說明文字)

使用git add只是將其添加到git 的暫存區,需要使用git commit進行提交,同時必須要加上說明文字。

技術分享

(5).查看版本 git log

技術分享

接下來,需要重復3~5

比如,我新建一個base.css文件,將其引入到 index.html中,所以,又需要add

技術分享

再次commit

技術分享

(6).回退 git reset --hard HEAD^/commit_id

第三天開發,發現需要回到第一個版本

技術分享

使用 git reset --hard HEAD^會退到上一個版本。

技術分享

我又後悔,需要再回到第二個版本。這是當前版本的未來版本,必須使用commit_idreset

技術分享

回退如下:

技術分享

此時,就已經切換到第二個版本。

三.Git基本概念及原理

1.基本概念

在使用git的時候,通常會提到如下幾個術語:

1)工作區

2)版本庫

3) 暫存區

4)分支

當我們使用git init命令初始化倉庫的時候,創建一個隱藏的目錄---- .git

這個文件夾將我們的項目目錄一分為二:

1.版本庫(倉庫)

2.工作區

1)凡是在.git目錄中的,都是屬於版本庫的

2)凡是在.git目錄之外的,都是屬於工作區的。

技術分享

我們的項目目錄

技術分享

一旦我們創建了版本庫,在開發的時候,就不能對版本庫目錄做任何的操作。

我們開發的操作都是在工作區進行的,新建、修改、刪除都是在工作區進行的。

也就是說,我們的常規開發都是在工作區進行的。

對於工作區的內容,其實就是我們常規的和項目相關的文件和文件夾。

對於版本庫,還需要進一步的去看看裏面有什麽東西。

版本庫,又一分為二:

1) 暫存區

2)主分支

暫存區:stage,臨時保存文件的一個區域,就相當於是一個中轉站。工作區中的任何內容都是需要通過暫存區,才能提交真正的分支上去。

主分支:master,它才是保存各個版本的地方

技術分享

2.基本原理

理解Git的關鍵在於 暫存區 的理解。

前面我們使用Git提交版本的時候,其實分成了兩步:

1) 使用git add命令

2)使用git commit命令

實際上,我們在將工作區的文件提交給版本庫的時候,首先是將其添加到 暫存區,然後才是從暫存區再提交給主分支。

1)git add ,將文件添加到 版本庫的 暫存區。

2)git commit ,將暫存區所有的文件一次性提交個 主分支。

我們不能直接從工作區到 主分支,必須要經過暫存區。

結合命令再次來看看這個過程。

使用 git status 可以查看 git版本庫的狀態。

text項目目錄下,新建一個版本庫,目前工作區沒有任何內容,如下:

技術分享

使用 git status命令,查看 版本庫的狀態:

技術分享

在工作區中,新建一個index.html文件,如下:

技術分享

再次使用 git status查看,如下:

技術分享

采納它的建議,使用git add命令,將index.html添加到版本庫的暫存區,如下:

技術分享

再次查看狀態,如下:

技術分享

說明這個文件,已經被放入暫存區了。

使用git commit 將其從暫存區提交到 主分支,如下:

技術分享

再次查看狀態:

技術分享

說明暫存區空了。

可以參考圖示。

四.基本操作

實際上,就是幾個常見命令,包括如下幾個:

1)git config

2)git init

3) git add

4)git commit

5)git status

6)git rese

Git可以完成兩件事情:

1.版本控制

2.多人協作

此處,討論都是針對個人的版本控制。

1.git config

用戶獲取/設置git的一些配置。

獲取git的配置,使用 git config --list

技術分享

我們重點關註的就只有 用戶名和郵箱的一個設置

git config user.name 用戶名

git config user.email 郵箱名

如果需要設置全局的,可以加 --global

技術分享

如果是第一次安裝 gituser.name user.email是沒有的,所以需要設置一下。

2.git init

用於初始化一個版本庫。

可以用兩種方式來初始化

1.先創建一個目錄,在這個目錄下,使用git init命令

2.直接使用 git init 項目名稱,初始化

技術分享

不管是哪種方式,都會在 項目目錄下,新建一個.git目錄,該目錄就是 版本庫,這個目錄是隱藏,也不允許用戶進行任何的操作。需要對版本庫進行操作,使用命令操作即可。

3.git add

作用:將文件從 工作區 添加到 版本庫的 暫存區

格式:git add 文件名1 文件名2 文件3

此處,也可以添加文件夾。

技術分享

技術分享

查看狀態,如下:

技術分享

4.git commit

作用:將所有文件一次性從暫存區 提交給 主分支,才會形成一個版本。

格式:git commit -m 說明文字

技術分享

一旦commit,就會將其提交個主分支,形成一個新的版本,同時會將暫存區清空。

在使用的時候,需要註意的一個問題 ---- 必須要添加說明文字。

添加說明文字有兩種方式:

1)使用 -m 參數 (推薦)

2)進入vi編輯器,然後編輯

如果在git commit的時候,沒有加上 -m ,就會進入vi編輯器,如圖:

技術分享

vi編輯器中,兩種種模式:

1)輸入模式,允許用戶輸入內容

2)命令模式,可以執行相關的一些命令

默認進來是一個命令模式,切換到輸入模式,按下 i,就可以輸入相應的說明文字。

按下ESC鍵,就退出輸入模式,進入命令模式。

如果想保存退出,需要輸入 wq

技術分享

推薦大家使用-m參數來添加說明文字。

5.git status

作用:查看版本庫的狀態,重點就是暫存區。

格式:git status

重點就是 讀懂不同的情況下的說明信息:

技術分享

技術分享

技術分享

技術分享

6.git reset

作用:用於切換到某一個版本

格式:git reset --hard HEAD^ /commit_id

一旦我們將項目形成多個版本,就可以使用git reset切換到任意版本。

通常需要查看當前版本庫的日誌信息。使用git log來查看,如下:

技術分享

現在就可以使用git reset命令回退。

如果是會退到之前的版本,可以使用HEAD關鍵字和commit_id。

HEAD^,回退到之前的一個版本

HEAD^^,回退到之前的兩個版本

HEAD^^^,回退到之前的三個版本

如果大於3的話,HEAD^10

技術分享

更好的方法就是使用 commit_id。

如果需要回退到當前版本的未來版本,必須使用commit_id。如果使用HEAD,會回退到更小的版本。

技術分享

再回到未來版本時,要分兩種情況:

我已經使用了git log查看過版本情況,直接拿到那個commit_id即可。

如果沒有使用git log查看過版本,使用git reflog可以查看整個commit_id情況。

技術分享

技術分享

Git詳細教程