Git
小弟之前有花蠻多時間研究 Git 的操作及用法,略有一些心得,提出一些建議供各位參考:
需討論Fucntion 的分類
新增message 內容,例如:
"#" 開頭為註解, git commit時, "#" 開頭那一行不會被當成訊息資訊
Syntax:
example:
使用 commitlint
使用validate-commit-msg
https://github.com/conventional-changelog-archived-repos/validate-commit-msg
若 Commit 符合 Angular 所定義的格式,可使用以下工具自動產生CHANGELOG.md:
Angular Format:
commitizen
https://juejin.im/post/5afc5242f265da0b7f44bee4
https://gist.github.com/leohxj/7bc928f60bfa46a3856ddf7c0f91ab98
https://gist.github.com/motin/5896c5b04d039aac48e6a2985d12171b
https://github.com/GoogleChrome/lighthouse/blob/master/.eslintrc.js
https://wadehuanglearning.blogspot.com/2019/05/commit-commit-commit-why-what-commit.html
https://allen-hsu.github.io/2017/07/02/git-message-template-and-githook/
http://www.ruanyifeng.com/blog/2016/01/commit_message_change_log.html
约定式提交
https://www.conventionalcommits.org/zh-hans/v1.0.0-beta.4/#约定式提交规范
Git Commit Message 這樣寫會更好,替專案引入規範與範例
https://wadehuanglearning.blogspot.com/2019/05/commit-commit-commit-why-what-commit.html
git merge 預設提供兩種方式:
快轉合併,由於Git 有時間軸的概念,通常要合併的commit 節點建立時間都比你現在來的晚,Git 提供fast-forward 的功能,讓你可以快轉到你要合併的commit,並以該commit 為base ,在後面再建立一個新的commit.
Note:
fast-forward 你可以把他想成撥放器,當你要看某個時間的片段(commit),你需要執行快轉的動作。或是你可以想像你目前的commit 跟欲合併的commit 是兩個平時時空,當你要進入他的世界,你需要把時間/時空調成跟他一樣,這樣才能看的到它,並跟他手牽手做愛做的事做該做的事
圖示說明:
執行 Merge 時會自動產生一個 Merge 的 commit 並產生分支支線圖(小耳朵).
圖示說明:
對於需要經常性同步的 Repository 建議使用 fast-forward merge 的方式
需要經常性同步的 Repository並共同維護同一個分支,通常都是 Commit 會有先後順序的問題,看誰先 Commit (先佔先行的概念),後面同步code 時,需要做merge 來更新,這個case 個人覺得 none fast-forward merge 就不是很恰當,同一個檔案一直被修改及合併,查看log 將會變得複雜,之後要用 git blame 查詢某個檔案的修改歷程,將會看到一的大堆merge 的 commit,於 trace Bug 的時候可能會造成一些困擾.
Example:
後面帶參數 –rebase
設定預設值為 rebase 的方法:
如果在master執行 git config –global pull.rebase true .git/config 設定檔將會產生:
按下左上方的 Pull 按鈕
預設為rebase mode
通常用在開發一個複雜的獨立新功能,需要比較長的時間開發,不從主要分支做同步更新(各走各的路,個是平行時空)。當這個分支開發完成,需要被合併的到主要的分支的時候,建議使用 none fast-forward merge(-no-ff) 來產生線圖,較容易分辨是從主要分支的哪的節點分出來的且產生一個合併的commit 及容易區分相關性.
在執行合併(Merge)時,不外乎會發生程式碼衝突(conflict),請參考以下資訊:
merge時衝突(Conflict)操作參考
https://ihower.tw/blog/archives/3843
Ref:
Git flow Script
使用 git pull –rebase
若你目前修改還未commit 建議您先將worktree 有異動的檔案先執行Stash
若當下你已有數個commit節點,你需要同步code 這時你執行git pull –rebase 若有衝突需確認哪個版本才是正確的(git 不會知道你要用哪個版本)
方法1. 直接在 Develop 建立修改的 commit
方法2(建議使用). 使用 git flow script (切出另一個分支 進行修改)
Note:
https://hackmd.io/@MaxChen/Codereview
ref:
https://willh.gitbook.io/gitpro/7d615cb13a55ac231e35e8658a897e0e
https://gitbook.tw/interview