Git 進階
Amanda Crawford-Adamo
Software and Data Engineer
Git Rebase 指令:
git rebase <branch_name>

data-cleanup 功能分支。git checkout data-cleanup
main 分支 rebase 到 data-cleanup 分支上。git rebase main
data-cleanup 的提交會在 main 最新提交之後重建data-cleanup 提交會有新雜湊注意: 若發生衝突,必須手動解決。

git rebase -i <commit_hash>
功能
警告!
main)上使用 rebase$$
這是在編輯提交歷史前的 data-validation 分支歷史。
$ git log --oneline data-validation
abc1234 Optimize validation performance
def5678 Fix validation bug
ghi9101 Add data validation function
xyz1234 New Main Branch Commit
vwx7890 Main Branch Commit
jkl2345 Initial commit
以下示範在開啟的編輯器中,使用 pick 與 fixup 指令來編輯提交歷史。
$ git rebase -i HEAD~3
pick ghi9101 Add data validation function
fixup def5678 Fix validation bug
fixup abc1234 Optimize validation performance
# Rebase xyz1234..abc1234 onto HEAD~3(xyz1234) (3 commands)
#
# Commands:
# p, pick <commit> = use commit
# f, fixup <commit> = like "squash", but discard this commit's log message
...
前
$ git log --oneline data-validation
abc1234 Optimize validation performance
def5678 Fix validation bug
ghi9101 Add data validation function
xyz1234 New Main Branch Commit
vwx7890 Main Branch Commit
jkl2345 Initial commit
後
$ git log --oneline data-validatoin
mno6789 Add data validation function
xyz1234 New Main Branch Commit
vwx7890 Main Branch Commit
jkl2345 Initial commit
以下提交已合併為一個:

Merge
Rebase
Merge
用於整合已完成的功能,並保留開發脈絡
Rebase
用於讓功能分支與 main 保持同步,或在合併前清理歷史
記住
Git 進階