Git Flow 指令大全(完整指令整理) 🚀

Git Flow 是 Git 的一種分支管理策略,它透過 git-flow 命令來簡化 開發 (Feature)發佈 (Release)熱修復 (Hotfix) 等流程。

gitflow_semantic

📌 1. 安裝 Git Flow

🔹 Windows

使用 Scoop (推薦):

使用 Chocolatey

使用 Git Bash (手動安裝)

🔹 macOS

使用 Homebrew (推薦)

使用 MacPorts

🔹 Linux (Ubuntu/Debian)

確認安裝成功:


📌 2. 初始化 Git Flow

Git Flow 需要在 每個 Git 專案中初始化一次

你會被問到以下問題,通常可以直接按 Enter 接受預設值:

初始化完成後,會建立 develop 分支,用於日常開發。


📌 3. 開發新功能 (Feature Branch)

當你要開發新功能時:

例如:

這會: ✅ 建立 feature/login-page 分支 ✅ 自動切換到該分支

🔹 提交變更

🔹 分享 Feature 分支到遠端

🔹 其他開發者拉取這個 Feature 分支

🔹 完成功能開發,合併回 develop

這會: ✅ 合併 featuredevelop ✅ 切換回 develop 分支 ✅ 刪除本地 feature 分支

🔹 推送最新的 develop 分支


📌 4. 發佈新版本 (Release Branch)

develop 分支的功能準備發佈時:

例如:

這會: ✅ 建立 release/v1.0 分支 ✅ 讓你可以修正最後的 Bug 或新增說明文件

🔹 如果需要修正錯誤

🔹 完成發佈

這會: ✅ 合併 release/v1.0main建立 Tag v1.0合併 release/v1.0develop (確保最新的 develop 包含這些變更) ✅ 刪除 release/v1.0 分支

🔹推送更新到遠端

🔹確認分支是否刪除

🔹若本地沒刪除,手動刪除本地分支

🔄 若要保留 test/staging 流程,你有兩個選項

選項 1:修改 git flow 流程順序

❗不要馬上 git flow release finish

  1. develop 開 release 分支

  2. 在 release 分支上做整合測試

    • ✅ 測試通過 → 合併到 test

    • ✅ 測試通過 → 合併到 staging

    • ✅ 最終通過 → git flow release finish → 發佈正式版

這樣 semantic-release 將只會在 main 合併後才產生正式版。

👉 這樣你就需要手動管理 release 分支,避免一開始就執行 git flow release finish


📌 5. 修復緊急 Bug (Hotfix Branch)

如果 main 分支的正式版本有 重大 Bug,請使用 Hotfix 分支:

例如:

這會: ✅ main 建立 hotfix/fix-login-bug 分支

🔹 修正錯誤後,提交變更

🔹 完成修正

這會: ✅ 合併 hotfixmain建立 Tag (標記修正版本)合併 hotfixdevelop (讓 develop 也包含修正) ✅ 刪除 hotfix 分支

🔹 推送更新


📌 6. 列出當前 Git Flow 分支

🔹 查看所有 Feature 分支

🔹 查看所有 Release 分支

🔹 查看所有 Hotfix 分支


📌 7. 刪除 Git Flow 分支

🔹 刪除本地 feature 分支

🔹 刪除遠端 feature 分支

🔹 刪除本地 release 分支

🔹 刪除遠端 release 分支

🔹 刪除本地 hotfix 分支

🔹 刪除遠端 hotfix 分支


📌 8. 其他實用指令

🔹 切換分支

🔹 檢查 Git Flow 設定

🔹 查看 Git Flow 工作流程

🔹 變更 Git Flow 預設編輯器


📌 9. 停止使用 Git Flow

如果你不想再使用 Git Flow:

或手動刪除 Git Flow 設定:


🎯 總結

  • 新功能開發git flow feature start/finish

  • 準備發佈git flow release start/finish

  • 修復緊急 Buggit flow hotfix start/finish

  • 查看目前流程git flow feature/release/hotfix list

  • 刪除 Git Flow 分支git branch -Dgit push origin --delete

這份 Git Flow 指令大全 可以幫助你更有效率地管理專案!🚀 如果有任何問題,歡迎隨時問我 😊


10. 📌 Git Flow Feature Rebase

git flow feature rebase 是 Git Flow 中一個非常實用的指令,主要用途是將 feature 分支的基礎更新到 develop 的最新狀態,讓你的開發分支保持在最新狀態,減少日後合併衝突的機率。


🧩 用途說明

在多人協作開發中,develop 分支經常會被其他人更新。如果你從 develop 開了一個 feature 分支,在你開發期間,develop 可能已經有了很多新的提交。

這時候你可以使用:

或是針對某一個 feature 名稱:

它會幫你做的事是:

  1. 切換到該 feature 分支。

  2. 將該分支 rebase 到 develop 的最新版本

  3. 如果發生衝突,需要你手動解決,然後繼續 rebase。


📘 使用範例

假設你正在開發 feature/login

這會:

  1. 切到 feature/login 分支。

  2. 執行:

  3. 幫你整理 commit 順序,讓 feature/login 像是「基於最新的 develop 新開的分支」。

繼續 rebase

所有衝突都解完並加進暫存區後,執行:


✅ 什麼時候使用?

  • 在你開發 feature 的過程中,develop 有更新,想要與之同步。

  • git flow feature finish 前先 rebase,確保整合乾淨。

  • 想保持歷史紀錄整潔(比起 mergerebase 能避免產生太多無意義的 merge commit)。


⚠️ 注意事項

  • Rebase 會重寫歷史紀錄,請避免對 已 Push 到遠端、多人共用的分支執行 rebase,否則會造成別人 pull 時出現問題。

  • 若你的 feature 分支已經 push 到遠端,請和團隊確認再 rebase。

  • 如果不熟悉 conflict 處理,建議改用 merge


建立空的Commit

建立一個「內容為空」的 commit(常用於觸發 CI/CD、記錄里程碑或初始化分支等情境),可以使用以下指令:

  • --allow-empty:允許你在沒有任何檔案變更的情況下,強制建立 commit。

  • -m:指定 commit 訊息。


範例

  1. 在當前分支建立空的 commit

  2. 搭配標籤(Tag) 如果想要在空 commit 上打標籤,例如做為版本起點:

  3. 修改已有 commit 為空 有時候你想在上一個 commit 後再加一個空 commit,可以用:


進階:使用 git commit-tree

如果你需要更底層的方式,也可以透過樹狀物件(tree object)直接建立空 commit:

不過一般日常使用建議還是以 git commit --allow-empty 最為簡潔。


Last updated