git 一個(gè)可以提高開(kāi)發(fā)效率的命令:cherry-pick詳解
各位碼農(nóng)朋友們一定有碰到過(guò)這樣的情況:在develop分支上辛辛苦苦擼了一通代碼后開(kāi)發(fā)出功能模塊A,B,C,這時(shí)老板過(guò)來(lái)說(shuō),年青人,我們現(xiàn)在先上線(xiàn)功能模塊A,B。你一定心里一萬(wàn)只草泥馬奔騰而過(guò),但為了混口飯吃必須得按老板的意思辦事啊。
怎么辦?一個(gè)辦法就是,重新建一個(gè)分支,然后再把功能模塊C回退,留下功能模塊A,B。這種做法不是不行,但是有更好的辦法,那就是git所提供的cherry-pick功能。
cherry-pick類(lèi)似于一個(gè)定制化的merge,它可以把其它分支上的commit一個(gè)個(gè)摘下來(lái),合并到當(dāng)前分支。
廢話(huà)不多說(shuō),直接上實(shí)例。
比如我現(xiàn)在有個(gè)文件a.c,我在develop分支完成了三個(gè)功能模塊:feature A,feature B,feature C。如下圖:

現(xiàn)在,坑爹的老板只要feature A,feature B,我們現(xiàn)在用cherry-pick命令直接把feature A,feature B的提交合并到master分支里,如下操作:

可以看到,功能模塊feature A,feature B已經(jīng)被合并到master分支里。請(qǐng)注意,合并到master分支里的提交哈希值發(fā)生了改變,與原來(lái)的不同。
可以看出,cherry-pick命令使用方法很簡(jiǎn)單,即:
git cherry-pick commitID
剛剛是一個(gè)個(gè)提交cherry-pick到master分支,但如果有100個(gè)commit要合并到master分支呢?總不能這樣一個(gè)個(gè)操作吧?git一樣幫你想到了,它提供了一個(gè)區(qū)間操作方法。具體來(lái)講是這樣的:
git cherry-pick commit1..commit100
但是要注意,這是一個(gè)左開(kāi)右閉的操作,也就是說(shuō),commit1不會(huì)被合并到master分支,而commit100則會(huì)。這樣的話(huà)上面的需求可以如下操作來(lái)實(shí)現(xiàn):

注意:上面講到cherry-pick命令每揀選一個(gè)commit就會(huì)提交一次生成一個(gè)新的commit id。 如果我們想讓每個(gè)commit 揀選后暫緩提交,等到所有commit都揀選完成后,自己手動(dòng)commit,應(yīng)該怎么辦呢?答案是用-n 選項(xiàng):

怎樣,是不是很簡(jiǎn)單?學(xué)會(huì)了cherry-pick命令媽媽再也不用擔(dān)心老板時(shí)不時(shí)的頭腦發(fā)熱了??鞉呙柘路蕉S碼和良許一起學(xué)習(xí)更多git神操作!
到此這篇關(guān)于git 一個(gè)可以提高開(kāi)發(fā)效率的命令:cherry-pick詳解的文章就介紹到這了,更多相關(guān)git cherry-pick命令內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Chrome瀏覽器斷點(diǎn)調(diào)試技巧(非常詳細(xì)!)
在我們?nèi)粘i_(kāi)發(fā)中,常常利用chrome強(qiáng)大的控制臺(tái)Sources下面進(jìn)行代碼斷點(diǎn)調(diào)試,這篇文章主要給大家介紹了關(guān)于Chrome瀏覽器斷點(diǎn)調(diào)試技巧的相關(guān)資料,需要的朋友可以參考下2023-09-09
使用git處理github中提交有沖突的pull request的問(wèn)題
這篇文章主要介紹了使用git處理github中提交有沖突的pull request,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11
Git建立本地倉(cāng)庫(kù)并上傳到Gitee的詳細(xì)步驟
這篇文章主要介紹了Git建立本地倉(cāng)庫(kù)并上傳到Gitee,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08
git提交報(bào)錯(cuò)pre -commit hook failed (add 
這篇文章主要介紹了git提交報(bào)錯(cuò)pre -commit hook failed (add --no-verify)問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11
HTTP請(qǐng)求 GET與POST方法的區(qū)別
HTTP定義了與服務(wù)器交互的不同方法,最基本的方法是 GET 和 POST.HTTP-GET和HTTP-POST是使用HTTP的標(biāo)準(zhǔn)協(xié)議動(dòng)詞,用于編碼和傳送變量名/變量值對(duì)參數(shù),并且使用相關(guān)的請(qǐng)求語(yǔ)義。2009-12-12
基于 Serverless +企業(yè)微信打造 nCoV 疫情監(jiān)控小助手
這篇文章主要介紹了基于 Serverless +企業(yè)微信打造 nCoV 疫情監(jiān)控小助手,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02
IE 瀏覽器安全級(jí)別詳情及區(qū)別小結(jié)
排查問(wèn)題時(shí),定位到可能和當(dāng)前瀏覽器的安全級(jí)別設(shè)置有關(guān),順便整理了下Windows 7下IE9安全級(jí)別的詳情內(nèi)容,及各安全級(jí)別下的默認(rèn)設(shè)置差異2016-01-01

