摘要:合并到多個(gè)目標(biāo)分支或其他人正在使用當(dāng)前分支這是應(yīng)該使用因?yàn)槟銏?zhí)行時(shí)當(dāng)前分支原先的會(huì)被刪除會(huì)影響他人,形成新的連接在目標(biāo)分支最新之后。
閱讀原文:合并分支使用Merge還是Rebase?
作為一個(gè)有追求的開發(fā)者,我一定會(huì)選擇更好的版本管理工具(Git), 使用中我們難免會(huì)在 Merge 和 Rebase 中選擇其一用于合并分支。
Rebase 和 merge 都是被設(shè)計(jì)用于集成你所做的改變從一個(gè)分支到另一個(gè)分支,只是通過不同的方式。雖然目的相同,但不同的方式有不同的優(yōu)缺點(diǎn)。
區(qū)別例如:我們有下面的幾個(gè)commit,merge會(huì)將一些commit的組合作為一個(gè)結(jié)果,而rebase會(huì)將所有commit添加到目標(biāo)分支的最近一次提交之后。
通過上圖我們可以看到,merge 會(huì)存在合并的歷史記錄,而rebase沒有了歷史記錄且成一條直線。
Merge簡(jiǎn)單易理解
源分支和目標(biāo)分支相互分離
保留功能分支的提交歷史和分支圖形
分支一旦較多顯示比較混亂
Rebase簡(jiǎn)化復(fù)雜的記錄且線性可讀
沒有合并的記錄
多個(gè)commit沖突時(shí)必須一個(gè)個(gè)提交去修改
對(duì)遠(yuǎn)程分支rebase需要force push
什么時(shí)候使用rebase?什么時(shí)候使用merge ?獨(dú)立開發(fā)
如果你不是團(tuán)隊(duì)合作開發(fā),那么你可以優(yōu)先選擇使用rebase來保持你整潔的提交歷史。
準(zhǔn)備code review
你需要在合并的時(shí)候有人來給你review,此時(shí)你需要提交一個(gè) merge/pull request,此時(shí)別人可review你的代碼后會(huì)執(zhí)行merge,這將保存你此次的請(qǐng)求合并的記錄,已備將來追溯。
合并到多個(gè)目標(biāo)分支或其他人正在使用當(dāng)前分支
這是應(yīng)該使用merge,因?yàn)槟銏?zhí)行rebase時(shí),當(dāng)前分支原先的commit會(huì)被刪除(會(huì)影響他人),形成新的commit連接在目標(biāo)分支最新commit之后。所以在這個(gè)條件不成立的時(shí)候你可以使用rebase來合并分支。
推薦在不符合上面第三點(diǎn)時(shí)(合并到多個(gè)目標(biāo)分支或其他人正在使用當(dāng)前分支),個(gè)人分支(feature/bugfix/……)中使用rebase來更新主分支(個(gè)人分支的來源)上的變動(dòng),確保當(dāng)前分支是最新的,然后提交merge/pull request,由其他人來負(fù)責(zé)對(duì)你的代碼進(jìn)行review并確定是否通過請(qǐng)求,這樣可以看到每個(gè)人開發(fā)合并的歷史記錄。
不知道你是如何的呢?
往期文章一覽把「策略模式」應(yīng)用到實(shí)際項(xiàng)目中
造個(gè)輪子,我學(xué)到了什么
技術(shù)面試中的軟技能
不同時(shí)重寫equals和hashCode又怎樣!
關(guān)注微信公眾號(hào)「碼上實(shí)戰(zhàn)」 回復(fù) :面試視頻 和 架構(gòu)師 送你非常不錯(cuò)的資料。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/74555.html
摘要:請(qǐng)注意,此不違反黃金規(guī)則,因?yàn)橹挥心愕谋镜靥峤槐灰苿?dòng),之前的所有內(nèi)容都不會(huì)受到影響。在大多數(shù)情況下,這比通過合并提交與遠(yuǎn)程分支同步更直觀。 寫在前面 如果你不能很好的應(yīng)用 Git,那么這里為你提供一個(gè)非常棒的 Git 在線練習(xí)工具 Git Online ,你可以更直觀的看到你所使用的命令會(huì)產(chǎn)生什么效果showImg(https://segmentfault.com/img/remote...
摘要:分支的創(chuàng)建合并與刪除創(chuàng)建分支與切換分支或者命令加上參數(shù)表示創(chuàng)建并切換?;蛘吆竺娌桓种麜r(shí)指列出所有分支,當(dāng)前分支前面加。刪除分支刪除本地分支,不能在當(dāng)前分支執(zhí)行刪除當(dāng)前分支的操作。 分支的創(chuàng)建、合并與刪除 創(chuàng)建分支與切換分支 $ git branch develop$ git checkout develop 或者 $ git checkout -b develop git che...
摘要:背景背景大家都有學(xué)習(xí)如何規(guī)范簡(jiǎn)潔的編寫代碼,但卻很少學(xué)習(xí)如何規(guī)范簡(jiǎn)潔的提交代碼。背景 大家都有學(xué)習(xí)如何規(guī)范簡(jiǎn)潔的編寫代碼,但卻很少學(xué)習(xí)如何規(guī)范簡(jiǎn)潔的提交代碼?,F(xiàn)在大家基本上都用 Git 作為源碼管理的工具,Git 提供了極大的靈活性,我們按照各種 workflow 來提交/合并 code,這種靈活性把控不好,也會(huì)帶來很多問題 最常見的問題就是亂成一團(tuán)的 git log histo...
摘要:還可以通過檢查對(duì)象內(nèi)容的的哈希值和對(duì)象名是否相同,來判斷對(duì)象內(nèi)容是否正確。對(duì)象對(duì)象和其它所有的對(duì)象一樣,都用其內(nèi)容的哈希值來命名的只有當(dāng)兩個(gè)對(duì)象的內(nèi)容完全相同包括其所指向所有子對(duì)象時(shí),它的名字才會(huì)一樣,反之亦然。 git是什么 簡(jiǎn)單來說,Git,它是一個(gè)快速的 分布式版本控制系統(tǒng) (Distributed Version Control System,簡(jiǎn)稱 DVCS) 。 同傳統(tǒng)的 集...
閱讀 2896·2021-08-20 09:37
閱讀 1619·2019-08-30 12:47
閱讀 1114·2019-08-29 13:27
閱讀 1696·2019-08-28 18:02
閱讀 760·2019-08-23 18:15
閱讀 3100·2019-08-23 16:51
閱讀 941·2019-08-23 14:13
閱讀 2161·2019-08-23 13:05