版本控制

變基(rebase)

變基(rebase)就是把你分支上的提交一個個拎起來,重新「放映」到另一個分支的最新版本之上——彷彿你的工作是此刻才開始的,而不是上週。結果是一條乾淨、筆直的歷史線,中間沒有任何「合併」的轉彎。

它解決的是一個實實在在的煩惱。在你開發功能的這段時間裡,main 已經往前走了。用合併(merge),會把兩條線接起來,在歷史裡留下一個看得見的「分岔又匯合」;而變基則改寫你的提交,讓它們整整齊齊地坐在 main 的新頂端上,就好像那次分岔從未發生過。最終程式碼一樣,故事卻更俐落。

有一條規則要刺在手臂上:永遠不要對已經分享出去的提交做變基。變基會改寫歷史——它給你的提交換上全新的編號(ID)——所以對別人已經拉取(pull)過的工作動手,會把大家的副本全攪亂。在分享之前,對你自己的私有分支變基;如果工作已經公開,那就老老實實用合併。

$ git switch fix-login
$ git rebase main
Successfully rebased and updated refs/heads/fix-login.

把你 fix-login 的提交重放到最新的 main 之上——歷史筆直,沒有合併氣泡。

合併和變基不是對錯之分——合併如實保留發生過的一切,變基則把它理成一條直線。看團隊口味來選。

又稱
git rebaserebase ontolinear history