# 如何使用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)