區別:1、rebase把當前的commit放到公共分支的最后面,merge把當前的commit和公共分支合并在一起;2、用merge命令解決完沖突后會產生一個commit,而用rebase命令解決完沖突后不會產生額外的commit。
本文操作環境:Windows10系統、git2.30.0版、Dell G3電腦。
git中rebase和merge的區別是什么
rebase會把當前分支的 commit 放到公共分支的最后面,所以叫變基。就好像從公共分支又重新拉出來這個分支一樣。
舉例:如果從 master 拉個feature分支出來,然后提交了幾個 commit,這個時候剛好有人把他開發的東西合并到 master 了,這個時候 master 就比你拉分支的時候多了幾個 commit,如果這個時候你 rebase master 的話,就會把你當前的幾個 commit,放到那個人 commit 的后面。
merge會把公共分支和你當前的commit 合并在一起,形成一個新的 commit 提交
采用merge和rebase后,git log的區別,merge命令不會保留merge的分支的commit:
處理沖突的方式:
-
(一股腦)使用merge命令合并分支,解決完沖突,執行git add .和git commit -m’fix conflict’。這個時候會產生一個commit。
-
(交互式)使用rebase命令合并分支,解決完沖突,執行git add .和git rebase –continue,不會產生額外的commit。這樣的好處是,‘干凈’,分支上不會有無意義的解決分支的commit;壞處,如果合并的分支中存在多個commit,需要重復處理多次沖突。
git pull和git pull –rebase區別:git pull做了兩個操作分別是‘獲取’和合并。所以加了rebase就是以rebase的方式進行合并分支,默認為merge。
推薦學習:《Git教程》