rebase和merge兩種合併分支的方式
git merge origin/master
把遠程下載下來的代碼合併到本地倉庫,遠程的和本地的合併
可以看到,merge操作會生成一個新的節點,之前的提交分開顯示。而rebase操作不會生成新的節點,是將兩個分支融合成一個線性的提交。
如果你想要一個乾淨的,沒有merge commit的線性歷史樹,那麼你應該選擇git rebase 如果你想保留完整的歷史記錄,並且想要避免重寫commit history的風險,你應該選擇使用git merge
解釋一下 $ git rebase origin 過程
這些命令會把你的"master"分支裏的每個提交(commit)取消掉,並且把它們臨時 保存為補丁(patch)(這些補丁放到".git/rebase"目錄中),
然後把"master"分支更新 為最新的"origin"分支,最後把保存的這些補丁應用到"master"分支上。
rebase也需要解決衝突
在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