# GitHub學習筆記 ## 目錄 * [關於 Github Repository](#關於-Github-Repository) * [關於 Git Commit Message](#關於-Git-Commit-Message) * [好用的 Git Commit 小工具](#好用的-Git-Commit-小工具) * [關於 Github Issue](#關於-Github-Issue) * [指令小抄](#指令小抄) * [參考文章](#參考文章) --- # 關於 Github Repository ## 建立SSH Key! 1.開啟終端機介面 2.`cd ~/.ssh`切換至該目錄(沒有的話手動建立 3.`ssh-keygen`開始建立SSH key  4.設定儲存目錄(預設是`~/.ssh/id_rsa` 5.設定密碼(可以是空值  ## 將Key加入GitHub! 1.開啟個人頁面->Setting->SSH & GPG keys  2.點選New SSH key  3.設定你的key名稱(可以依據不同裝置命名,如Computer1 4.將公鑰內容複製並貼在key的位置 5.按下Add SSH key :::spoiler 複製公鑰?  > :::danger > 注意!千萬別複製錯了,公鑰是`.pub`那一支! > ::: :::  ## 將鑰匙加入ssh-agent! 使用此指令確認ssh-agent服務開啟 ```eval "$(ssh-agent -s)"``` 再將鑰匙加入 ```ssh-add demo_key``` ## 推東西上去Github 1.在想要版本控制的目錄下輸入`git init`完成版控初始化 2.完成`git add` 、`git commit -m "first commit"` 3.去Github上新增一個repo  4.輸入`git remote add origin git@github.com:smdick1995/DEMOOO.git` 5.接著輸入`git push -u origin main`即可  --- # 關於 Git Commit Message > Commit Message 最好包含 Why 跟 What,Git Repo 存在的目的不僅僅是當作 FTP 儲存程式碼而已,而是為了讓日後維護人員,只看 Commit Message 就能快速進入狀況。 當一個團隊或是專案持續成長,會面臨到程式碼管理越發複雜,需要導入 Code Review 來審慎管理每一次變更,因此養成良好的 Commit 習慣,絕對是有益無害。 作為新創團隊的我們,可以先從參考其他大型專案如何定義規範開始,再依據我們的需求逐步調整,慢慢建立屬於我們團隊的規範。 [看看知名開源專案 AngularJS 他們如何定義規範](https://docs.google.com/document/d/1QrDFcIiPjSLDn3EL15IJygNPiHORgU1_OOAqWjiDU5Y/edit#heading=h.greljkmo14y0) 首先,此規範定義出了所有可能的 Commit Type 以及使用時機: ```git! feat: 新增/修改功能 (feature)。 fix: 修補 bug (bug fix)。 docs: 文件 (documentation)。 style: 格式 (不影響程式碼運行的變動 white-space, formatting, missing semi colons, etc)。 refactor: 重構 (既不是新增功能,也不是修補 bug 的程式碼變動)。 perf: 改善效能 (A code change that improves performance)。 test: 增加測試 (when adding missing tests)。 chore: 建構程序或輔助工具的變動 (maintain)。 revert: 撤銷回覆先前的 commit 例如:revert: type(scope): subject (回覆版本:xxxx)。 ``` Commit Type 是用來告訴進行 Code Review 的人應該以什麼角度來檢視 Commit 內容。 例如: * 看到 Type 為 fix,進行 Code Review 的人就可以用「觀察 Commit 如何解決錯誤」的角度來閱讀程式碼。 * 若是 refactor,則可以放輕鬆閱讀程式碼如何被重構,因為重構的本質是不會影響既有的功能。 以下我將示範一個完整的 Commit Message 組成要件有哪些: ```git! // Header feat: 客戶帳務明細「原始金額」欄位顯示調整 // Body 本來「原始金額」是先四捨五入到小數點第二位後再開始計算出「費用總計」、「總金額」,但財務部反映這樣「總金額」會不準確,故現在「原始金額」不四捨五入了,改成在「費用總計」、「總金額」取四捨五入即可。 // Footer issue: Internal - IT - 00014 ``` 以 Why 跟 What 為出發點,來龍去脈寫清楚,當作寫給未來的自己看。 * **Header** 分好類別,盡量簡述,不加句號 * **Body** 詳盡描述,因為什麼需求而調整什麼 * **Footer** Issue 的本意是開放他人在開源專案(Github)上提出問題來討論,並且幫助專案追蹤問題,但目前我們先以 Ragic 工單號碼紀錄 ## Commit 範例 * **Feat** ```git! feat: 客戶帳務明細「原始金額」欄位顯示調整 本來「原始金額」是先四捨五入到小數點第二位後再開始計算出「費用總計」、「總金額」,但財務部反映這樣「總金額」會不準確,故現在「原始金額」不四捨五入了,改成在「費用總計」、「總金額」取四捨五入即可。 issue: Internal - IT - 00014 ``` ```git! feat: 客戶帳務明細檔名調整 本來都叫做 Invoice_202402帳務明細,因應財務部需求調整成: Ali-D1-***-202402帳務明細 Ali-新加坡-***-202402帳務明細 AWS-Nextlink-***-202402帳務明細 AWS-Sakura-***-202402帳務明細 GCP-Mile-***-202402帳務明細 (***為客戶名稱) issue: Internal - IT - 00017 ``` ```git! feat: 新增 payername 下拉式選單 為了在建立匯出檔案名稱時,能有效區別不同 payer,故新增 payername 陣列回傳至前端,讓使用者可以選擇。 issue: None ``` * **Fix** ```git! fix: 修正客戶帳務明細手續費計算錯誤問題 問題: GCP 產出的帳務明細手續費有誤,應該是 1.05 而非 0.05。 原因: 源自資料上游 GCP Bill_detail 的生產邏輯,手續費是以百分比顯示,導致在產出明細時皆是以 0.05 去計算。 調整方式: 在產出明細時,手續費計算前加上 1 以確保運算結果正確。 issue: Internal - IT - 00018 ``` * **Docs** ```git! docs: 重新整理 README.md 新增了簡易的流程示意圖,加了簡短描述,讓讀者可以快速理解本專案的目標、功能及解決什麼問題。 issue: None ``` ```git! docs: 新增資料庫 connect info 註解 因為開發電腦跟部屬伺服器的資料庫 connect info 不同,故選擇在 git push 前將開發電腦資料庫 connect info 註解,並留下部署伺服器的 connect info。 issue: None ``` * **Style** ```git! style: 調整程式碼顯示的縮排 讀取「客戶付款資訊」的 dict 太長了,不方便閱讀,故調整成 "Key": "Value", 逐行顯示,以便閱讀和修改。 issue: None ``` ```git! style: issue: None ``` * **Refactor** ```git! refactor: 重構讀取「客戶付款資訊」的邏輯 原本讀取「客戶付款資訊」的邏輯四散在每個 API,故需求一改變,每個地方都需要調整一遍,為了解決此問題,現在統一由 get_customer_payment_info() 方法來讀取客戶付款資訊,並將此方法包裝在 tool.py 中。 issue: None ``` * **Perf** ```git! perf: issue: None ``` * **Test** * **Chore** * **Revert** --- # 好用的 Git Commit 小工具  承接上回,我們提到如何規範 Git Commit Message,現在來分享一個開源套件 [git-cz](https://github.com/streamich/git-cz),可以有效且方便的撰寫 Commit Message,你不再需要為了思考如何排版而苦惱。 ## 如何安裝 首先,你需要安裝[`npm`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm),再透過`npm`來執行此套件安裝 全域模式安裝指令 `npm install -g git-cz` 跑完讀條就安裝完成了,超巨簡單! ## 如何執行 :::warning 加入這個套件後,版本控制的流程就從: `git add .` --> `git commit -m "create repo"` --> `git push` 改成: `git add .` --> `git cz` --> `git push` ::: 1. 在任何 Git 受管的目錄下執行指令即可 `git cz` 2. 接著可以參照[我們定義的規範](#關於-Git-Commit-Message),選擇這次的 Commit Type  3. 為這次的 Commit 定義一個簡短說明  4. 輸入更完整的說明  5. 是否為破壞性修改(可能是指 feat, refactor,可以按下`Enter`略過)  6. 輸入本次修改是回應哪個 Issue,可以輸入 Ragic 工單號碼,方便專案追蹤(沒有就打`None`)  7. 這樣就完成啦!  ## 如何客製化 Git-cz TODO ## Tips * 如果出現此行錯誤表示你的工作區域並沒有檔案(指的是你需要 `git add .`) `✖ error No files staged!` --- # 關於 Github Issue  Github Issue 算是專案管理系統中,管理工作事項的功能,旨在促進開源專案的意見討論,任何人都可以透過建立 Issue 提出問題或想法,如:**回報 Bug**、**優化既有程式碼**、**討論專案規劃**、**建立工作事項**等等,每一個 Issue 都會是完整公開的,也能整合 Commit Message 或是後續 CI/CD 功能來追蹤案件是否`closes`,方便任何人隨時加入專案時,也有來龍去脈可以了解 Issue 情況。 照慣例,我們先來參考別的專案怎麼使用 Issue  # CodeGPT 工具介紹 --- # 指令小抄 `git remote -v` 檢視目前註冊在工作目錄裡的遠端儲存庫資訊。 `git remote add origin https://github.com/diverwil1995/car-booking.git` 新增遠端名稱及網址。 `rm -r .git` 強制刪除(包含內部所有檔案)非空白目錄。 `git checkout -b feature` 切換並建立"feature"分支。 `git push -u origin feature` 從本地"origin"推commit到遠端"feature",(-u)並建立遠端分支。 `git restore 檔案名稱` 回復變更,會將該檔案還原至上一次commit的狀態。 `git rm --cached 文件名` 停止追蹤某支檔案。 # 參考文章 [Github SSH Key 建立](https://ithelp.ithome.com.tw/articles/10205988) [後端工程師的第一堂課:Git](https://medium.com/johnliu-%E7%9A%84%E8%BB%9F%E9%AB%94%E5%B7%A5%E7%A8%8B%E6%80%9D%E7%B6%AD/%E5%BE%8C%E7%AB%AF%E5%B7%A5%E7%A8%8B%E5%B8%AB%E7%9A%84%E7%AC%AC%E4%B8%80%E5%A0%82%E8%AA%B2-24-git-%E7%89%88%E6%9C%AC%E6%8E%A7%E5%88%B6-1450ddb0e69f) [Git commit message](https://wadehuanglearning.blogspot.com/2019/05/commit-commit-commit-why-what-commit.html)
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up