#將dev分支合併當前分支
git merge dev
#也是將dev分支合併當前分支
git rebase dev
區別與理解:
現在基於遠程分支"origin:develop 上",創建一個叫"mywork"的分支。
$ git checkout -b mywork origin
merge
與此同時有人在origin分支上提交了兩個修改,但是你自己也在自己的分支上mywork 提交了兩個修改
網絡圖片
此時你想要把代碼合到origin上,你需要把origin分支的代碼pull 下來,和你本地的mywork分支進行合併,並且去提交
// 當前分支在mywork 上
$ git checkout mywork
$ git pull origin develop
// 在當前自己分支mywork上(這裏把pull 命令給分步了)
$ git checkout mywork
$ git fetch origin develop:tmp
$ git merge tmp
網絡圖片
這樣merge 後會有一個commit
而rebase 不會產生額外的commit。這樣的好處是,‘乾淨’,分支上不會有無意義的解決分支的commit
rebase
讓"mywork"分支歷史看起來像沒有經過任何合併一樣,你也許可以用 git rebase:
$ git checkout mywork
$ git rebase origin:develop
這些命令會把你的"mywork"分支裏的每個提交(commit)取消掉,並且把它們臨時 保存爲補丁(patch)(這些補丁放到".git/rebase"目錄中),然後把"mywork"分支更新 到最新的"origin:develop"分支,最後把保存的這些補丁應用到"mywork"分支上。
網絡圖片
當’mywork’分支更新之後,它會指向這些新創建的提交(commit),而那些老的提交會被丟棄。 如果運行垃圾收集命令(pruning garbage collection), 這些被丟棄的提交就會刪除.
網絡圖片
在rebase的過程中,也許會出現衝突(conflict). 在這種情況,Git會停止rebase並會讓你去解決 衝突;在解決完衝突後,用"git-add"命令去更新這些內容的索引(index), 然後,你無需執行 git-commit,只要執行:
$ git rebase --continue
在任何時候,你可以用–abort參數來終止rebase的行動,並且"mywork" 分支會回到rebase開始前的狀態。
$ git rebase --abort