git合并部分提交的實(shí)現(xiàn)
寫(xiě)在前面
在日常工作中經(jīng)常會(huì)有這樣的場(chǎng)景,在正常的功能開(kāi)發(fā)中突然有緊急的bug修改,或者是緊急功能開(kāi)發(fā)上線,在上線時(shí)又不能將正在開(kāi)發(fā)中的功能合并到主干,此時(shí)我們就需要只合并需要緊急上線的代碼到主干,接下來(lái)我們就看下這種情況如何處理。
1:cherry-pick
通過(guò)git的cherry-pick命令可以選擇合并哪個(gè)提交id對(duì)應(yīng)的修改到當(dāng)前分支,接下來(lái)詳細(xì)看下。
假設(shè)現(xiàn)在本地有master分支和dev兩個(gè)分支,如下圖:
PS D:\test\test-cherry-pick> git branch -vv * dev2 64af4de [origin/dev2] modify bbb.txt add 二二二 master 10ac835 [origin/master] modify aaa.ttxt add 一一一
當(dāng)前我們?cè)?dev2
,當(dāng)前假設(shè)提交記錄如下:
PS D:\test\test-cherry-pick> git log -n2 --pretty=oneline 64af4de7d496fff9d68489e7ab6304589f00a0d1 (HEAD -> dev2, origin/dev2) modify bbb.txt add 二二二 5aed452f3bebebd87d6be48388f8dab57037cbb8 modify aaa.ttxt add 一一一
我們希望合并提交ID為 64af4de7d496fff9d68489e7ab6304589f00a0d1
的修改到主干,此時(shí)我們需要記下這個(gè)提交ID,然后切換到master,如下:
PS D:\test\test-cherry-pick> git checkout master Switched to branch 'master' Your branch is up to date with 'origin/master'. PS D:\test\test-cherry-pick> git branch dev2 * master
然后使用命令 git cherry-pick 提交ID
進(jìn)行合并,如下:
PS D:\test\test-cherry-pick> git cherry-pick 64af4de7d496fff9d68489e7ab6304589f00a0d1 [master 88c7faf] modify bbb.txt add 二二二 Date: Tue May 17 18:07:05 2022 +0800 1 file changed, 2 insertions(+), 1 deletion(-)
然后就可以正常的push合并的信息到遠(yuǎn)程master了。其他的提交ID也可以通過(guò)這種方式來(lái)完成合并。在idea中也可以進(jìn)行這種操作,都是如下的步驟:
1:切換到要合并代碼的分支
2:獲取要合并的提交,執(zhí)行cherry-pick。
只不過(guò)使用idea是通過(guò)界面操作,而不是使用命令罷了,如下我們?cè)?dev2
分支進(jìn)行了如下修改,先增加了文件 ddd.txt
,然后增加了文件 eee.txt
,產(chǎn)生的提交記錄如下:
然后我們將這2次提交通過(guò)cherry-pick合并到master,首先切換到master分支:
然后選中項(xiàng)目->git->show history,進(jìn)入如下界面:
默認(rèn)顯示的是當(dāng)前分支的提交記錄,為了能夠看到dev2分支的提交記錄,我們將查看歷史的分支切換為dev2,如下:
此時(shí)就可以看到dev2的提交記錄了,如下:
接下來(lái)shift選中紅框記錄,然后右鍵cherry-pick即可,如下圖:
接下來(lái)就可以push到遠(yuǎn)端了。
如果,凡事有如果,cherry-pick本質(zhì)也是合并代碼,如果是合并代碼有沖突怎么辦呢?會(huì)提示失敗,此時(shí)怎么辦呢?如果是idea的話會(huì)給出比較友好的提示讓我們自己合并,但是個(gè)人建議一旦出現(xiàn)沖突,就不要采用cherry-pick方式來(lái)合并了,可以考慮使用 2:idea compare功能
方式。
2:idea compare功能
git提供了比較的功能,通過(guò)比較我們也可以很方便的合并自己想要合并的內(nèi)容,按照如下操作:
手動(dòng)點(diǎn)擊中間的 >>
比較合并就可以了,因?yàn)槭鞘止?,一定要?xì)心,不要合并錯(cuò)了。
3:最佳實(shí)踐★★★★★
按照如下2種情況:
1:如果是完全獨(dú)立的修改(修改已有文件,沒(méi)有其他人修改,或者是新添加的文件),則優(yōu)先選擇使用"1:cherry-pick",至于命令行方式還是idea的GUI方式,根據(jù)個(gè)人習(xí)慣,推薦idea方式,效率高。
2:如果是存在非獨(dú)立的修改(修改的已有文件也有他人修改且不可合并,或者是添加了不可合并的新文件),使用"2:idea compare功能",雖然效率相對(duì)低一些,但是安全性高,不容易出問(wèn)題,對(duì)于新文件,手動(dòng)CV即可。
到此這篇關(guān)于git合并部分提交的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)git合并部分提交內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Git如何實(shí)現(xiàn)撤銷(xiāo)提交(命令行+IDEA)
- git提交報(bào)錯(cuò)pre -commit hook failed (add --no-verify)問(wèn)題及解決
- git提交出現(xiàn)commit提醒信息界面怎樣退出
- git如何將master分支上的代碼合并到自己新建的分支上
- git worktree與分支依賴(lài)隔離的使用場(chǎng)景分析
- gitlab分支合并沖突的處理過(guò)程
- git分支或指定文件回退到指定版本命令詳解
- GitLab在IDEA中回滾主分支問(wèn)題
- git流水線(Pipeline)導(dǎo)致分支(Branch)無(wú)法合并問(wèn)題及解決
- git如何合并某個(gè)分支的某次提交(cherry-pick)
- git如何從某個(gè)分支的指定歷史版本中創(chuàng)建新分支
- Git提交到錯(cuò)誤分支如何解決
相關(guān)文章
spark通過(guò)kafka-appender指定日志輸出到kafka引發(fā)的死鎖問(wèn)題
這篇文章主要介紹了spark通過(guò)kafka-appender指定日志輸出到kafka引發(fā)的死鎖,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05gliffy-confluence-plugin-9.1.2插件教程詳解
這篇文章主要介紹了gliffy-confluence-plugin-9.1.2破解教程詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02Keil?uVision5?5.38官方下載、安裝及注冊(cè)超詳細(xì)圖文教程
這篇文章主要介紹了Keil?uVision5?5.38官方下載、安裝及注冊(cè)教程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03Django 使用 cookie 實(shí)現(xiàn)簡(jiǎn)單的用戶(hù)管理功能
這篇文章主要介紹了Django 使用 cookie 實(shí)現(xiàn)簡(jiǎn)單的用戶(hù)管理功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-06-06Git基礎(chǔ)之git與SVN版本控制優(yōu)缺點(diǎn)區(qū)別分析
這篇文章主要為大家介紹了Git基礎(chǔ)之git與SVN優(yōu)缺點(diǎn)及區(qū)別分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-04-04chatGPT?deBug解決管理員登入服務(wù)器返回401問(wèn)題
這篇文章主要介紹了chatGPT?deBug解決管理員登入,服務(wù)器返回401,沒(méi)有拿到數(shù)據(jù),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05將WSL系統(tǒng)更換國(guó)內(nèi)源的方法(固定路徑+國(guó)內(nèi)鏡像源+詳細(xì)教程)
這篇文章主要介紹了將WSL系統(tǒng)更換國(guó)內(nèi)源的方法(固定路徑+國(guó)內(nèi)鏡像源+詳細(xì)教程),首先找到wsl鏡像源,替換鏡像源,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-10-10Prometheus和NodeExporter安裝監(jiān)控?cái)?shù)據(jù)說(shuō)明
這篇文章主要為大家介紹了Prometheus和node?exporter安裝監(jiān)控?cái)?shù)據(jù)說(shuō)明,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07