跳轉至

建立 2024-01-01 更新 2026-09-15

git rebase

git rebase 把目前分支的提交「剪下來」,接到另一條分支的最新狀態上,讓歷史看起來比較直線。這會改寫 commit hash。只適合整理還沒推到共用分支、或團隊明確允許的功能分支。

多數入門流程用 git merge 就夠。

基本用法

在功能分支上:

git switch feature-branch
git rebase main

意思是:以目前的 main 為新底,重放你的提交。

與 merge 的差異

  • merge:保留分叉,多一個合併提交。
  • rebase:重寫成直線,沒有額外的 merge commit。

衝突時

git add <解決後的檔案>
git rebase --continue

要放棄這次 rebase:git rebase --abort。

推送

歷史改過之後,遠端上的舊分支對不上,可能需要:

git push origin feature-branch --force-with-lease

--force-with-lease 比 --force 稍安全:若遠端已被別人更新會拒絕覆蓋。不要對 main 或別人正在用的分支強制推送。