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