解決沖突
git rebase和git merge的區(qū)別
分支合并
git merge是用來合并兩個分支的。
比如:將 b 分支合并到當前分支。
同樣git rebase b,也是把 b 分支合并到當前分支
他們的 「原理」 如下:
假設你現(xiàn)在基于遠程分支"origin",創(chuàng)建一個叫"mywork"的分支。
$gitcheckout-bmyworkorigin
假設遠程分支"origin"已經(jīng)有了 2 個提交,如圖。
現(xiàn)在我們在這個分支做一些修改,然后生成兩個提交(commit)。
$vifile.txt $gitcommit $viotherfile.txt $gitcommit ...
但是與此同時,有些人也在"origin"分支上做了一些修改并且做了提交了。
這就意味著"origin"和"mywork"這兩個分支各自"前進"了,它們之間"分叉"了。
在這里,你可以用"pull"命令把"origin"分支上的修改拉下來并且和你的修改合并;結果看起來就像一個新的"合并的提交"(merge commit):
但是,如果你想讓"mywork"分支歷史看起來像沒有經(jīng)過任何合并一樣,你也許可以用git rebase:
$gitcheckoutmywork $gitrebaseorigin
這些命令會把你的"mywork"分支里的每個提交(commit)取消掉,并且把它們臨時 保存為補丁(patch)(這些補丁放到".git/rebase"目錄中),然后把"mywork"分支更新 為最新的"origin"分支,最后把保存的這些補丁應用到"mywork"分支上。
當mywork分支更新之后,它會指向這些新創(chuàng)建的提交(commit),而那些老的提交會被丟棄。如果運行垃圾收集命令(pruning garbage collection), 這些被丟棄的提交就會刪除。(請查看 git gc)
基于 Spring Boot + MyBatis Plus + Vue & Element 實現(xiàn)的后臺管理系統(tǒng) + 用戶小程序,支持 RBAC 動態(tài)權限、多租戶、數(shù)據(jù)權限、工作流、三方登錄、支付、短信、商城等功能
項目地址:https://github.com/YunaiV/ruoyi-vue-pro
視頻教程:https://doc.iocoder.cn/video/
解決沖突
在 rebase 的過程中,也許會出現(xiàn)沖突(conflict)。在這種情況,Git 會停止 rebase 并會讓你去解決 沖突;在解決完沖突后,用git-add命令去更新這些內(nèi)容的索引(index),然后,你無需執(zhí)行git-commit,只要執(zhí)行:
$gitrebase--continue
這樣 git 會繼續(xù)應用(apply)余下的補丁。
在任何時候,你可以用--abort參數(shù)來終止 rebase 的行動,并且"mywork" 分支會回到 rebase 開始前的狀態(tài)。
$gitrebase--abort
基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 實現(xiàn)的后臺管理系統(tǒng) + 用戶小程序,支持 RBAC 動態(tài)權限、多租戶、數(shù)據(jù)權限、工作流、三方登錄、支付、短信、商城等功能
項目地址:https://github.com/YunaiV/yudao-cloud
視頻教程:https://doc.iocoder.cn/video/
git rebase和git merge的區(qū)別
現(xiàn)在我們可以看一下用合并( merge )和用 rebase 所產(chǎn)生的歷史的區(qū)別:
git rebase和git merge的區(qū)別
當我們使用Git log來參看 commit 時,其 commit 的順序也有所不同。
假設 C3 提交于9:00AM,C5 提交于 10:00AM,C4 提交于 11:00AM,C6 提交于 12:00AM。
對于使用 git merge 來合并所看到的 commit 的順序(從新到舊)是:C7、C6、C4、C5、C3、C2、C1。
對于使用 git rebase 來合并所看到的 commit 的順序(從新到舊)是:C7、C6‘、C5'、C4、C3、C2、C1。
因為C6'提交只是 C6 提交的克隆,C5' 提交只是 C5 提交的克隆。
從用戶的角度看使用 git rebase 來合并后所看到的commit的順序(從新到舊)是:C7、C6、C5、C4、C3、C2、C1。
-
數(shù)據(jù)
+關注
關注
8文章
6808瀏覽量
88743 -
管理系統(tǒng)
+關注
關注
1文章
2375瀏覽量
35759 -
Git
+關注
關注
0文章
196瀏覽量
15720
原文標題:面試官:說說git merge和git rebase的區(qū)別
文章出處:【微信號:芋道源碼,微信公眾號:芋道源碼】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論