---
# System prepended metadata

title: 如何使用Git協作?

---

# 如何使用Git協作?

## 快樂的基礎教學
### 前言
學習Git基本上是每個工程師的必經之路，俗話說的好，版本控制做得好，專案執行沒煩惱。

Git其實就是一個版本控制的工具，假如有一天我們開發新功能時不小心把某個東西改壞了，
我們就可以透過Git回朔到上n個版本。

而Github就是我們透過Git放置我們程式碼的**雲端儲存空間**，類似的服務還有Bitbucket/GitLab....等等

我們也將利用這個儲存空間來協作專案，接下來就讓我們一起來學習如何使用Git來成為~快樂的碼農~吧

### 安裝Git
透過[官網](https://git-scm.com/download/win)下載Git並安裝，基本上6年內買的電腦都可以快樂點選「64-bit Git for Windows Setup」的版本，如果你是使用mac的，那你可以把你的mac捐給我。以下開放斗內

### 認識儲存庫(Repository)
通常我們會把每個專案都放在不同儲存庫中，你也會常常聽到人家講Repository或是Repo

### 認識分支(Branch)
要完成的工作很多，有時候改來改去不知道哪邊改了什麼對吧 ~(改天)~ !因此我們通常會用分支(Branch)來針對每次待完成的工作來去進行區別。

例如我今天要做前端導覽列，我就要新增一個叫做「add_navbar」的分支，用來區別我們這個分支主要是完成哪項工作

### 認識~犯罪~(Commit)
不知道大家有沒有玩過遊戲，在很多遊戲中，都有「復活點」的設計，而commit就是程式的復活點，當我們在實做功能時，每做到一個特定的段落就應該新增一個commit，

用以保存目前程式的狀態，如果不小心在特定的地方掛掉了，就可以透過復活點無痛復活啦~

***

## 好玩的實務操作
### 下載程式碼(Clone)
我們到`Code`這個Tab，點選右上角的`Code`並選擇`Download Zip`就可以把專案下載下來囉
![image](https://user-images.githubusercontent.com/12562305/197111018-90a1b68c-ee59-4d08-bdd6-301e1c82e1d0.png)

### 確認工作(Issue)
我們可以在`Issue`這個Tab看到我們目前有哪些工作要完成，並且用filter的方式來看屬於你自己的單
![image](https://user-images.githubusercontent.com/12562305/197107238-1eb733e6-f7e1-4de5-bcd0-5de8419d7b20.png)

接著就可以根據單上的內容來完成工作了!

這時候我們可以看到在這張單的後面有個#[xxx]
這個xxx就是我們的單號id。
之後我們在建立分支時，就要透過這個單號id來命名。

以這張圖片為例，我們就要新增一個`9-mission-ac`的單

也就是`[單號id]-[自定義的名稱，請用英文]`
![image](https://user-images.githubusercontent.com/12562305/197108716-84e49eb9-8899-4309-8291-c5fb4323f662.png)

### 新增分支(Branch)

在Issue的右下角有個`Development`，點選底下的`Create a branch`，打開以下彈窗並點選彈窗右邊的`Change Branch Source`

填寫完branch名稱(請用英文)之後我們要選擇branch source。

基本上一般開發我們要選擇`develop`，但新手任務請選擇`mission`，接著按下`Create Branch`就大功告成啦~

![image](https://user-images.githubusercontent.com/12562305/197114829-cd534b39-9eeb-42b7-a884-ab3a19d7870c.png)


接著在專案資料夾底下按右鍵，點選使用`Git Bash Here`，打開後的這個黑黑白白的介面我們稱為終端機(Terminal)

![image](https://user-images.githubusercontent.com/12562305/197111433-0f98feed-89d3-4fb6-af05-64262d11cd04.png)

輸入`git fetch`就可以看到新的branch被加進來啦!(我的終端機有特別調整過，長得比較不一樣)

![image](https://user-images.githubusercontent.com/12562305/197110621-ba561eef-bf4d-45f9-8401-461dec89a56d.png)


### 切換分支(Checkout)
但我們目前使用的分支，是預設的main分支，我們必須要進行切換分支的動作

指令是`git checkout [分支名稱]`

以目前我要做的來說，就是`git checkout 9-mission-ac`，切換完成之後我們就可以開始修改我們要調整的程式碼啦~

![image](https://user-images.githubusercontent.com/12562305/197111912-8e44a115-7dd1-4ee5-be60-bb5b13cedbad.png)

### 修改&Commit&Push
在我們完成單上的修改後，我們需要告訴git我們要把那些修改的東西加入復活點(commit)

因此我需要在終端機內輸入 `git add src/main/resources/training/ac.txt` 代表將這個`ac.txt`加入復活點

並且輸入`git commit -m 'add: introduction of ac'` 來創建復活點，而`add: introduction of ac`就是這個復活點的註記

Commit我們通常會使用以下方式來命名﹔
* 新增: `add: xxx`
* 修改: `modified: xxx`
* 刪除: `remove: xxx` or `del: xxx`

最後再輸入`git push`來把我們剛剛執行的紀錄推上GitHub!

![image](https://user-images.githubusercontent.com/12562305/197112463-9d029aa8-393f-470f-aa41-5274ae197510.png)

### 請求合併(Pull Request)
剛剛都是在我們的分支來開發，但是一個專案必須融合所有人做的成果，因此會需要發Pull Request讓管理員把我們寫好的程式合併(merge)到主要的branch中。

當我們使用`git push` 並**再三檢查完**之後，就可以來發PR了。

回到GitHub中，你會發現他已經問妳要不要發PR，
這時候點選`Compare & Pull Request`

![image](https://user-images.githubusercontent.com/12562305/197113945-89182af4-f530-4660-8a5b-bc546c3c66e4.png)

然後選擇要合併的branch，新手任務請選擇`mission` 一般開發請選擇`develop`

在底下可以選填本次pr做的內容及注意事項。

![image](https://user-images.githubusercontent.com/12562305/197114240-e310b490-b798-4032-a693-600604f37259.png)

往下拉到最下面你可以看到本次PR你修改的有哪些，確認無誤就可以點選 `Create Pull Request`

![image](https://user-images.githubusercontent.com/12562305/197114378-9feb9bca-c8d6-4081-837e-34608cac306b.png)




