Git rebase 和 Git merge 的区别,你知道吗?
編輯搜圖
請點(diǎn)擊輸入圖片描述
Git是大多數(shù)程序必備的工具之一,Git常用那么幾個命令:pull、push、status、merge、rebase。Git rebase 和 Git merge都是合并分支的命令,很多人都會對這兩條命令不能很好的理解,本篇文章給大家介紹以下兩者的區(qū)別。
1、merge和rebase
這兩個命令:merge和rebase都是用來合并分支的。
下面的內(nèi)容主要說的是兩者在實(shí)際操作中的區(qū)別。
什么是分支
分支就是便于多個開發(fā)人員在同一個項目中的協(xié)作開發(fā)。比如說:每個人開發(fā)不同的功能模塊,就需要在各自的分支開發(fā)從而互不影響,到最后完成后都提交到develop分支。這樣極大的提高了開發(fā)的效率。
合并分支
每個人創(chuàng)建一個分支進(jìn)行開發(fā),當(dāng)開發(fā)完成,需要合并到develop分支的時候,就需要用到合并分支的命令。
什么是沖突
分支合并的時候,有可能會產(chǎn)生沖突。
沖突的產(chǎn)生是因為在合并的時候,不同分支修改了相同的位置的代碼。所以在合并的時候git不知道那個到底是你想保留哪一個,所以就提出疑問(沖突提醒)讓你自己手動選擇想要保留的內(nèi)容,從而解決沖突。
merge和rebase的區(qū)別
處理沖突的方式:
使用
merge
命令合并分支,解決完沖突,執(zhí)行
git?add .
和
git?commit -m'fix conflict'
。這個時候會產(chǎn)生一個commit。
rebase
git?rebase --continue
,不會產(chǎn)生額外的commit。這樣的好處是‘干凈’,分支上不會有無意義的解決分支的commit。
git?pull
git?pull --rebase
區(qū)別:
做了兩個操作分別是‘獲取’和合并。所以加了rebase就是以rebase的方式進(jìn)行合并分支,默認(rèn)為merge。
以一張圖的形式merge和rebase的區(qū)別展示:
編輯搜圖
請點(diǎn)擊輸入圖片描述
總結(jié):我的簡單理解——merge顯性的處理沖突,rebase隱性的處理沖突。
git?merge和git?merge --no-ff的區(qū)別
我自己嘗試
命令后,發(fā)現(xiàn):merge時并沒有產(chǎn)生一個commit。不是說merge時會產(chǎn)生一個merge commit嗎?
注意:只有在沖突的時候,解決完沖突才會自動產(chǎn)生一個commit。
如果想在沒有沖突的情況下也自動生成一個commit,記錄此次合并就可以用:
git?merge --no-ff
命令,下面用一張圖來表示兩者的區(qū)別:
編輯搜圖
請點(diǎn)擊輸入圖片描述
?
如何選擇合并分支的方式
我的理解:主要是看那個命令用的熟練,能夠有效的管理自己的代碼;還有就是團(tuán)隊用的是那種方式。
我對于rebase比較熟悉,所以我一般都用
,但是現(xiàn)在的公司用的是
merge --no-ff
命令合并分支。所以,我在工作上就用merge,個人項目就用rebase。
也可以兩者結(jié)合:
獲取遠(yuǎn)程項目中最新代碼時:
,這個時隱性的合并遠(yuǎn)程分支的代碼不會產(chǎn)生而外的commit。
合并到分支的時候:
,自動一個merge commit,便于管理(這看管理人員怎么認(rèn)為了)
總結(jié)
合并時,沒有沖突的情況下兩者一樣。(我認(rèn)為,如果理解錯了還望指正)
merge顯性處理沖突
rebase隱性處理沖突
文章推薦程序員效率:畫流程圖常用的工具程序員效率:整理常用的在線筆記軟件遠(yuǎn)程辦公:常用的遠(yuǎn)程協(xié)助軟件,你都知道嗎?51單片機(jī)程序下載、ISP及串口基礎(chǔ)知識硬件:斷路器、接觸器、繼電器基礎(chǔ)知識
總結(jié)
以上是生活随笔為你收集整理的Git rebase 和 Git merge 的区别,你知道吗?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华为主题包hwt下载_华为主题开发工具
- 下一篇: A Quantization-Frien