概念:
git rebase
git rebase 是叫變基=>更換基線=>更換commit的基線=>把其他分支上的commit應用到當前分支上。
git merge
Merge 是進行3方合併,並且把合併的結果保存成一個commit。兩個分支合併默認會使用fast-forward
合併策略,
二者的區別:
Merge是兩個分支進行合併,二者是平等的。rebase 是把一個分支的commits 複製到另外一個分支上,不會產生Merge remote-tracking branch 'origin/main'
這樣的commit。
合併過程
- 先fetch,remote-tracking分支就有最新的commit了
git fetch --all
# git remote update -p # 同步遠程分支
- 再嘗試進行merge,但是merge 可能會產生衝突,解決的方法是如果產生衝突就不要使用merge了,而是用rebase
git merge @{u} --ff-only
# @{u} 表示當前分支跟蹤的遠程分支,比如當前分支是main ,這個就相當於 origin/main
# --ff-only ,表示只使用fast-forward 策略合併,如果合併不了則報錯
- 使用rebase 解決衝突併合並
git rebase -r @{u}
# 將遠程分支的commit 打補丁到當前分支, -r 表示保留遠程commit 的信息。
git的衝突格式
<<<<<<HEAD(當前分支)
第一個分支修改的內容
======
第二個分支修改的內容
>>>>>> 其他分支