合并代碼還在用 git merge 嗎?互聯(lián)網(wǎng)公司都用 git rebase!
來源 |?juejin.cn/post/7001409038307033119
01、git merge 和 git rebase的區(qū)別 02、git merge 03、git rebase
01、git merge 和 git rebase的區(qū)別
目的都是將一個分支的commit合并到到另外一個分支中去
02、git merge
在gitlab上新建一個項目,push一個test文件上去
2.在本地修改test文件做兩次commit,每次commit都在文件中加一句修改


3.在遠(yuǎn)程倉庫中直接修改文件并commit,模擬其他開發(fā)者的commit


4.如果此時我push本地的提交到遠(yuǎn)程,就會被拒絕,因為遠(yuǎn)程和本地已經(jīng)各自有commit了,我們常規(guī)的做法是git pull一下,在本地解決沖突,然后繼續(xù)push,本質(zhì)上git pull = git fetch + git merge
產(chǎn)生沖突:

處理沖突:

重新走add commit 然后push,可以看到必須將合并當(dāng)作一個新的commit:
03、git rebase
如果我們此時采用git pull --rebase,也就是=git fetch + git rebase
一樣本地commit2次,遠(yuǎn)程commit2次


使用可以看到git pull --rebase,還是會提示我們?nèi)ヌ幚頉_突,但是從git log 上可以看出明顯已經(jīng)發(fā)生了rebase,也就是變基,本地分支基于了遠(yuǎn)程的最新commit,而不是上次的本地commit


處理沖突,每處理完一次本地commit沖突,用git add標(biāo)記沖突已處理完,用git rebase --continue繼續(xù)處理下一個本地commit,也可以先用git rebase -i將本地的commit合并為一個commit,這樣git pull --rebase就能一次處理所有的沖突

push到遠(yuǎn)程之后,在分支圖可以明顯看到,跟merge的區(qū)別在于,rebase不會產(chǎn)生分支,并且也不會產(chǎn)生新的提交

END
推薦:
最近好文
1、IntelliJ IDEA 的 Win 和 Mac 快捷鍵大全!
最近面試BAT,整理一份面試資料《Java面試BAT通關(guān)手冊》,覆蓋了Java核心技術(shù)、JVM、Java并發(fā)、SSM、微服務(wù)、數(shù)據(jù)庫、數(shù)據(jù)結(jié)構(gòu)等等。 獲取方式:關(guān)注公眾號并回復(fù)?java?領(lǐng)取,更多內(nèi)容陸續(xù)奉上。
評論
圖片
表情

