git rebase
是git下比較常用的命令,以下記錄自己遇到較多的使用場景。
合併分支
在多人協作的項目中,拉分支是很常見的事情,經常需要同步自己的分支與遠端master分支一致,有兩種方式:
- git merge master
- git rebase master
兩者的區別在於:前者會在生成一條 Merge branch master into XXX 的commit記錄,而後者能保持commit乾淨。
git rabase
在開源提交PR時,能夠更好地保持commit 整潔,消除了多餘的 Merge log。
# 假設私拉分支爲fix_bug,且當前處於此分支上
# 同步master分支
git fetch master
git rebase master
# 如何有衝突,會暫停rebase,需要手動解決衝突,然後
git add your_conflict_file
git rebase --continue
# 在任何時候,都可以終止rebase
git rebase --abort
# 會回到執行rebase前的狀態
# 在當前分支git pull時有時候也會產生Merge記錄
# 可以在後面加上--rebase,保持commit log整潔
git pull --rebase
合併多條commit記錄
# 合併最近提交的3條commit
git rebase -i HEAD~3
# pick 表示選擇此次commit,squash表示將此commit和上一條commit合併
# 修改完之後,wq保存退出,會合並commit
# 切忌不要 git pull
# 因爲合併的是遠程已經push的commit,要應用合併,需強制push
git push -f