---
# System prepended metadata

title: Git

---

# Git 

## 初次設定
### 確認安裝以及當前版本
```bash
$ git --version
```
![](https://i.imgur.com/JA9O4K5.png)


### 設定使用者資訊
```bash
$ git config --global user.name "UserName"
$ git config --global user.email "Email"
```
### 檢查使用者資訊
```bash
$ git config --list
```
![](https://i.imgur.com/RdIxECp.png)


## 初始化

```
//建立資料夾
$ mkdir gitTest

//移動到剛才建立的資料夾下
$ cd gitTest

//資料夾git初始化
$ git init
```
資料夾裡出現 ![](https://i.imgur.com/Hhd6juk.png) 就初始化成功囉

## 工作流程
![](https://i.imgur.com/YXjo1TX.png)

首先隨意建立一個檔案在剛才生成的資料夾
並查看 git 目前狀態
```
$ git status
```
![](https://i.imgur.com/JveM8vt.png)

檔案目前尚未被追蹤

將檔案 Stage，有兩種方式

Stage 單一檔案
```
$ git add 檔案名稱
```
Stage 所有檔案
```
$ git add . 
```

再次查看狀態
```
$ git status
```
![](https://i.imgur.com/Dv34Vz2.png)

檔案成功被追蹤
接下來進行 Commit

```
$ git commit -m "Message"
```

![](https://i.imgur.com/ZVoUmlM.png)

更動檔案裡的資料
再次查看狀態，狀態又會變為 not staged
```
$ git status
```
![](https://i.imgur.com/DpylkdL.png)

## 分支

### 查看當前所處分支
```
$ git branch
```
![](https://i.imgur.com/ra81pZU.png)

分支主要用來將流程區分，把程式碼分成不同狀態進行儲存
![](https://i.imgur.com/SKRb63h.png)

### 建立分支
```
$ git checkout -b develop
```
建立好後會自動切換到該分支
![](https://i.imgur.com/yCf92KZ.png)

### 列出所有分支
```
$ git branch -a
```
![](https://i.imgur.com/OAF53We.png)

### 切換分支
```
$ git checkout 分支名稱
```
![](https://i.imgur.com/PG6gbVB.png)

### 合併分支

```
$  git merge 要合併的分支
```

ex: develop 合併到 master
![](https://i.imgur.com/J5RQZO6.png)

### 合併衝突

如果有在合併分支的過程中發現同個地方有不一樣的程式碼
這時候就會發生衝突

在master分支的內容
![](https://i.imgur.com/1jM7Nan.png)

在develop分支的內容
![](https://i.imgur.com/hWKfLB8.png)


合併分支後會變成這樣
![](https://i.imgur.com/B5HIzg3.png)

![](https://i.imgur.com/c0Ydj3Q.png)

這個時候就要看哪邊的程式碼是我們需要的，
也可以把兩邊的程式碼都留下，
之後在 Commit 解決後的內容就可以囉！

## 遠端庫 Repository

在我們完成Commit後，我們可以將內容推送到遠端庫

在 GitLab 或 GitHub 建立 Project
![](https://i.imgur.com/gRD0BMw.png)

### 將本地的存儲庫 Remote 到遠端庫
```
$ git remote add 遠端庫代稱 遠端庫連結
```
![](https://i.imgur.com/u1kkx6Z.png)

可以不只擁有一個遠端庫
### 查看所有遠端庫
```
$ git remote -v
```
![](https://i.imgur.com/YGKpJE3.png)

### 將本地端推送到遠端庫
```
$ git push -u 遠端庫代稱 分支名
```
推送成功後就會出現
![](https://i.imgur.com/YAc6hem.png)

遠端庫上也會出現我們剛才所push的內容 !
![](https://i.imgur.com/mTrPWtb.png)

### 多人共編

如果有一個專案小組想在同一份專案進行改動
這是就可以使用 git clone

到遠端庫找到連結

![](https://i.imgur.com/BPpXmTu.png)

```
$ git clone 遠端庫連結
```

因為是多人共編，也會有他人的改動
如果要將別人改動後的內容下載並**合併**至本地分支

```
$ git pull 遠端庫 分支名
```

ex: 將遠端庫 master 合併到 本地 develop

![](https://i.imgur.com/cCG8q0o.png)

如果只想下載不想合併
```
$ git fetch
```