Git全棧開發者使用指南
阿新 • • 發佈:2021-01-01
# 一、Git基礎
![在這裡插入圖片描述](https://gitee.com/sanfene/picgo/raw/master/20201228134236.png)
## 1、Git簡介
Git是一種分散式版本控制系統,由Linux之父Linus開發。
所謂分散式版本管理系統,就是在每一臺機器上都有一個完整的倉庫。
![image-20201229212250725](https://gitee.com/sanfene/picgo/raw/master/20201229212252.png)
## 2、Git官網
Git官網:[git](https://git-scm.com/)
![image-20201229212543426](https://gitee.com/sanfene/picgo/raw/master/20201229212545.png)
在官網上可以獲取Git的安裝軟體。
除此之外,還可以下載《progit》——這是最棒的Git學習資料,而且有中文版本。
## 3、Git安裝
從 ` https://git-scm.com/downloads`官方下載地址下載對應的作業系統版本一步步安裝即可。
![在這裡插入圖片描述](https://gitee.com/sanfene/picgo/raw/master/20201229213027.png)
## 4、Git基本配置
安裝完成之後,在任意目錄下,右鍵 `Git Bash Here`
![在這裡插入圖片描述](https://gitee.com/sanfene/picgo/raw/master/20201229213217.png)
全域性配置郵箱和使用者名稱(`–global`表示全域性配置,也可以不配置,每個倉庫單獨配置)
````bash
$ git config --global user.name "test"
$ git config --global user.email [email protected]
````
## 5、Git基本概念
### 5.1、Git工作區域
Git有四個工作區域:
- 工作區
簡單說工作區就是我們專案的目錄。
![image-20201229220303023](https://gitee.com/sanfene/picgo/raw/master/20201229220304.png)
- 倉庫區/本地倉庫
工作區有一個`.git`目錄,其實這個不是工作區,是Git的版本庫,儲存了Git倉庫的所有版本資訊
![image-20201229220345268](https://gitee.com/sanfene/picgo/raw/master/20201229220346.png)
![在這裡插入圖片描述](https://gitee.com/sanfene/picgo/raw/master/20201229220702.png)
- 暫存區
暫存區域是一個檔案,儲存了下次將提交的檔案列表資訊,一般在 Git 倉庫目錄中。 有時候也被稱作“索引”,
不過一般說法還是叫暫存區域。
- 遠端倉庫
對於分散式版本管理系統,遠端倉庫不是必須存在的,但是通常專案都會有遠端倉庫。例如`Github`就是我們非常熟悉的遠端倉庫。
![image-20201229221144078](https://gitee.com/sanfene/picgo/raw/master/20201229221145.png)
基本的Git工作流程如下:
* 在工作目錄修改檔案
* 暫存檔案,將檔案快照放入暫存區
* 提交更新,找到暫存區的檔案,將快照永久性儲存到到 Git 倉庫區(本地)
* 將本地倉庫的變更推送到遠端倉庫
以上幾個區域的關係可以用下圖表示:
![img](https://gitee.com/sanfene/picgo/raw/master/20201229221523.png)
### 5.2、Git分支
分支是為了將修改記錄的整個流程分開儲存,讓分開的分支不受其它分支的影響,所以在同一個資料庫裡可以同時進行多個不同的修改。
![在這裡插入圖片描述](https://gitee.com/sanfene/picgo/raw/master/20201229221702.png)
Git 為我們自動建立的第一個分支,也叫主分支,一般其它分支開發完成後都要合併到 master
![在這裡插入圖片描述](https://gitee.com/sanfene/picgo/raw/master/20201229221800.png)
### 5.3、Git檔案狀態
在git中,檔案主要有四種狀態:
![Life Cycle](https://gitee.com/sanfene/picgo/raw/master/20201229222227.png)
- **Untracked**: 未跟蹤, 此檔案在資料夾中, 但並沒有加入到git庫, 不參與版本控制. 通過`git add` 狀態變為`Staged`.
- **Unmodify**(Committed): 檔案已經入庫, 未修改, 即版本庫中的檔案快照內容與資料夾中完全一致. 這種型別的檔案有兩種去處, 如果它被修改, 而變為`Modified`. 如果使用`git rm`移出版本庫, 則成為`Untracked`檔案
- **Modified**: 檔案已修改, 僅僅是修改, 並沒有進行其他的操作. 這個檔案也有兩個去處, 通過`git add`可進入暫存`staged`狀態, 使用`git checkout` 則丟棄修改過, 返回到`unmodify`狀態, 這個`git checkout`即從庫中取出檔案, 覆蓋當前修改
- **Staged**: 暫存狀態. 執行`git commit`則將修改同步到庫中, 這時庫中的檔案和本地檔案又變為一致, 檔案為`Unmodify`狀態. 執行`git reset HEAD filename`取消暫存, 檔案狀態為`Modified`
# 二、Git應用實踐
看完上面的Git基礎,你可能有一些迷惑,接下來,我們以實際工作中開發的流程來加深對Git的理解吧。
## 1、克隆專案
可以通過在工作區使用`git init`來初始化一個Git倉庫,但通常開發中我們不會這樣做,因為實際的專案大部分已經進行了部分開發,並進行了版本管理,所以我們首先做的是從遠端倉庫克隆專案。
這裡我從Gitee(一般開發專案的遠端倉庫是部署在內網的GitLab) `fork`了一個開源專案,將這個專案作為遠端倉庫的專案:
![image-20201229214855118](https://gitee.com/sanfene/picgo/raw/master/20201229214857.png)
點選`克隆下載`,可以看到專案的路徑,
- `HTTPS`是憑據式的路徑,使用此路徑,向遠端倉庫推送程式碼的時候需要憑據(賬號密碼);
> 這種方式向遠端倉庫提交,會要求賬號密碼,輸入完成之後,Win10作業系統可以選擇記住憑據,這樣就不用每一次都輸入了,Win10作業系統管理憑據 `控制面板 → 使用者帳戶 → 憑據管理器 → Windows憑據`
>
> ![image-20201230174621550](https://gitee.com/sanfene/picgo/raw/master/20201230174623.png)
- `SSH`是祕鑰式的路徑,向遠端倉庫推送程式碼的時候,需要本地的私鑰和遠端倉庫的公鑰對應。
SSH配置可以參考 [Windows配置Github、Gitee共存的Git環境](https://blog.csdn.net/sinat_40770656/article/details/110916511),這裡就不詳細展開講解。
我已經進行了公私鑰的配置,所以這裡選擇SSH。
![image-20201229215107233](https://gitee.com/sanfene/picgo/raw/master/20201229215109.png)
使用`git clone`命令克隆專案
![image-20201229215845069](https://gitee.com/sanfene/picgo/raw/master/20201229215846.png)
## 2、程式碼管理
專案已經成功克隆,接下來要進行我們的開發了。
### 2.1、建立分支
通常開發不是在`Master`分支上,而是在開發分支上,使用 `git branch develop`建立一個新分支:
![image-20201229222931344](https://gitee.com/sanfene/picgo/raw/master/20201229222932.png)
可以通過`git branch`命令列出所有分支:
![image-20201229223057016](https://gitee.com/sanfene/picgo/raw/master/20201229223058.png)
可以看到我們新建的分支。
### 2.2、切換分支
使用`git checkout develop`命令切換到新建的develop分支:
![image-20201229223325328](https://gitee.com/sanfene/picgo/raw/master/20201229223327.png)
### 2.3、新增檔案到暫存區
接下來,我們再develop分支上進行一些開發操作,我這裡對 redeme 進行了一些修改,需要把修改新增到暫存區。
- 首先通過 `git status`命令檢視工作區檔案狀態
![image-20201229223653744](https://gitee.com/sanfene/picgo/raw/master/20201229223655.png)
- 接下來使用 `git add README.md`命令(可以使用`git add .`新增所有修改)將更改新增到暫存區
![image-20201229223945199](https://gitee.com/sanfene/picgo/raw/master/20201229223946.png)
可以看到檔案已經新增。
### 2.4、提交修改到倉庫
接下來使用`git commit -m "