Skip to main content

Develop

常用分支名稱

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

模擬多人開發

  • 新開發者將主開發者的專案fork過來自己的repo,然後用GitBash複製clone到本地端
  • 開一個新的feature分支
  • 開始進行開發新功能 git-flow4
  • 開發完成後,先將新分支push到自己的Github
  • 使用pull request對原專案擁有者提出合併請求
  • 選擇欲合併的分支來源及合併至哪個分支,之後點選Create Pull Request git-flow5 git-flow6
  • 此時源專案擁有者的畫面中Pull request頁簽會出現新的合併請求,點選Merge Pull Request即可 git-flow7

Revert

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

git-flow9

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 . //復原已刪除的檔案

git-flow8

Rebase

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

git-flow3