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

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


📌 1. 安裝 Git Flow

🔹 Windows

使用 Scoop (推薦):

scoop install git-flow-avh

使用 Chocolatey

choco install gitflow-avh -y

使用 Git Bash (手動安裝)

git clone --depth=1 https://github.com/petervanderdoes/gitflow-avh.git
cd gitflow-avh
make install

🔹 macOS

使用 Homebrew (推薦)

brew install git-flow-avh

使用 MacPorts

sudo port install git-flow

🔹 Linux (Ubuntu/Debian)

sudo apt install git-flow

確認安裝成功:

git flow version

📌 2. 初始化 Git Flow

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

git flow init

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

Which branch should be used for production releases?
- main

Which branch should be used for integration of the "next release"?
- develop

Feature branches? (feature/)
Release branches? (release/)
Hotfix branches? (hotfix/)

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


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

當你要開發新功能時:

git flow feature start <feature-name>

例如:

git flow feature start login-page

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

🔹 提交變更

git add .
git commit -m "完成登入頁面"

🔹 分享 Feature 分支到遠端

git flow feature publish <feature-name>

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

git flow feature pull origin <feature-name>

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

git flow feature finish <feature-name>

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

🔹 推送最新的 develop 分支

git push origin develop

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

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

git flow release start <version>

例如:

git flow release start v1.0

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

🔹 如果需要修正錯誤

git add .
git commit -m "修正錯誤"

🔹 完成發佈

git flow release finish <version>

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

🔹推送更新到遠端

git push origin main develop --tags

🔹確認分支是否刪除

git branch

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

git branch -D release/v1.0

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

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

git flow hotfix start <hotfix-name>

例如:

git flow hotfix start fix-login-bug

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

🔹 修正錯誤後,提交變更

git add .
git commit -m "修正登入 Bug"

🔹 完成修正

git flow hotfix finish <hotfix-name>

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

🔹 推送更新

git push origin main develop --tags

📌 6. 列出當前 Git Flow 分支

🔹 查看所有 Feature 分支

git flow feature list

🔹 查看所有 Release 分支

git flow release list

🔹 查看所有 Hotfix 分支

git flow hotfix list

📌 7. 刪除 Git Flow 分支

🔹 刪除本地 feature 分支

git branch -D feature/<feature-name>

🔹 刪除遠端 feature 分支

git push origin --delete feature/<feature-name>

🔹 刪除本地 release 分支

git branch -D release/<release-name>

🔹 刪除遠端 release 分支

git push origin --delete release/<release-name>

🔹 刪除本地 hotfix 分支

git branch -D hotfix/<hotfix-name>

🔹 刪除遠端 hotfix 分支

git push origin --delete hotfix/<hotfix-name>

📌 8. 其他實用指令

🔹 切換分支

git flow feature checkout <feature-name>
git flow release checkout <release-name>
git flow hotfix checkout <hotfix-name>

🔹 檢查 Git Flow 設定

git config --list | grep gitflow

🔹 查看 Git Flow 工作流程

git log --oneline --decorate --graph --all

🔹 變更 Git Flow 預設編輯器

git config --global core.editor "nano"  # 使用 nano
git config --global core.editor "code --wait"  # 使用 VS Code

📌 9. 停止使用 Git Flow

如果你不想再使用 Git Flow:

git flow init -d

或手動刪除 Git Flow 設定:

git config --remove-section gitflow

🎯 總結

  • 新功能開發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 可能已經有了很多新的提交。

這時候你可以使用:

git flow feature rebase

或是針對某一個 feature 名稱:

git flow feature rebase <feature-name>

它會幫你做的事是:

  1. 切換到該 feature 分支。

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

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


📘 使用範例

假設你正在開發 feature/login

git flow feature rebase login

這會:

  1. 切到 feature/login 分支。

  2. 執行:

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

繼續 rebase

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

git rebase --continue

✅ 什麼時候使用?

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

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

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


⚠️ 注意事項

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

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

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


建立空的Commit

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

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

  • -m:指定 commit 訊息。


範例

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

    git checkout feature/x
    git commit --allow-empty -m "初始化 feature/x 分支"
  2. 搭配標籤(Tag) 如果想要在空 commit 上打標籤,例如做為版本起點:

    git commit --allow-empty -m "start v2.0.0"
    git tag -a v2.0.0 -m "版本 2.0.0 起點"
    git push origin feature/x --follow-tags
  3. 修改已有 commit 為空 有時候你想在上一個 commit 後再加一個空 commit,可以用:

    git commit --allow-empty -m "再加一個空 commit"

進階:使用 git commit-tree

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

# 1. 取得目前 HEAD 指向物件的 tree
TREE=$(git rev-parse HEAD^{tree})

# 2. 建立一個空 commit
git commit-tree $TREE -p HEAD -m "底層建立空 commit"
# 這會輸出新 commit 的 SHA

# 3. 切換分支到這個新 commit(假設 SHA 為 abc1234)
git reset --hard abc1234

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


Last updated