Develop
常用分支名稱
- develop:做為開發的基礎,通常不直接在此進行commit,由此開feature分支開發新功能,最後合併回develop
- feature:開發新功能的分支,命名方式為feature/some-function
- master:等同main,用來放穩定可上線的版本,不直接在上面進行commit
- release:develop分支成熟後合併到release分支,做上線前最後測試,測試完畢後合併至master
- hotfix:如果線上穩定版本出現問題,則從main開hotfix分支進行修復,修復完畢合併至main,也同時合併到develop

模擬多人開發
- 新開發者將主開發者的專案fork過來自己的repo,然後用GitBash複製clone到本地端
- 開一個新的feature分支
- 開始進行開發新功能

- 開發完成後,先將新分支push到自己的Github
- 使用pull request對原專案擁有者提出合併請求
- 選擇欲合併的分支來源及合併至哪個分支,之後點選Create Pull Request

- 此時源專案擁有者的畫面中Pull request頁簽會出現新的合併請求,點選Merge Pull Request即可

Revert
- 取消但不刪除commit
- 不影響歷史記錄
git revert HEAD //取消但不刪除最新的一次commit

Reset
- 取消並且刪除commit
- 有可能影響到歷史記錄
- mixed模式:預設模式,拆除commit後將檔案保留在working directory
- soft模式:拆除commit後將檔案保留在staging area
- hard模式:拆除commit後將檔案刪除
git reset HEAD~ //拆除commit後將檔案保留在working directory
git reset HEAD~ --soft //拆除commit後將檔案保留在staging area
git reset HEAD~ --hard //拆除commit後將檔案刪除
git reflog //列出所有更改記錄
git reset HEAD@{5} //恢復到沒有刪除的狀態
git restore . //復原已刪除的檔案

Rebase
- 用於整理分支
- 重新定義commit的基底至某個branch
- 一定會影響歷史記錄
git checkout new-branch //切換到new-branch
git rebase main //將基底改為最新的main
