rebase和merge兩種合併分支的方式


git merge origin/master

把遠程下載下來的代碼合併到本地倉庫,遠程的和本地的合併

grafana9合併表格Transform中的Merge_歷史記錄

可以看到,merge操作會生成一個新的節點,之前的提交分開顯示。而rebase操作不會生成新的節點,是將兩個分支融合成一個線性的提交。

如果你想要一個乾淨的,沒有merge commit的線性歷史樹,那麼你應該選擇git rebase 如果你想保留完整的歷史記錄,並且想要避免重寫commit history的風險,你應該選擇使用git merge

解釋一下 $ git rebase origin 過程

這些命令會把你的"master"分支裏的每個提交(commit)取消掉,並且把它們臨時 保存為補丁(patch)(這些補丁放到".git/rebase"目錄中),

然後把"master"分支更新 為最新的"origin"分支,最後把保存的這些補丁應用到"master"分支上。

rebase也需要解決衝突

grafana9合併表格Transform中的Merge_#git_02

在rebase的過程中,也許會出現衝突(conflict). 在這種情況,Git會停止rebase並會讓你去解決 衝突;

在解決完衝突後,用"git -add"命令去更新這些內容的索引(index), 然後,你無需執行 git-commit,只要執行:

$ git rebase --continue

這樣git會繼續應用(apply)餘下的補丁。

在任何時候,你可以用--abort參數來終止rebase的行動,並且本地"master" 分支會回到rebase開始前的狀態。

$ git rebase --abort

 

 


git pull 對比 git pull --rebase


git pull = git fetch + git merge

git pull --rebase = git fetch + git rebase