最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解決Git?Revert?再次合代碼無效問題

 更新時(shí)間:2022年08月25日 14:15:49   作者:師無一  
這篇文章主要為大家介紹了解決Git?Revert?再次合代碼無效問題,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

背景

將開發(fā)分支dev合并進(jìn)主分支main以后,如果發(fā)現(xiàn)bug需要回滾代碼時(shí),我們常使用git revert完成操作,但是當(dāng)我們將dev上的bug修復(fù)之后想再把它合進(jìn)main卻會(huì)發(fā)現(xiàn),dev上的功能代碼合不進(jìn)去了,原因是這些功能代碼的commit已經(jīng)在main分支上了(雖然被revert了,但仍在),所以git會(huì)拒絕合進(jìn)重復(fù)的commit。

本人最近就遇到了這種問題場(chǎng)景,查閱網(wǎng)上資料推薦的做法一般是把main之前的revert再revert掉然后合dev,但是實(shí)際操作過程中卻發(fā)生了如下錯(cuò)誤:

不明就里,估計(jì)是因?yàn)槎嗳藚f(xié)作導(dǎo)致main分支日新月異,revert操作產(chǎn)生了不可描述的沖突,翻看長(zhǎng)串的git log已難以厘清... ...但我決定不去深究這些細(xì)節(jié),因?yàn)橐严氲礁昝赖慕鉀Q方案??!

那就是利用git rebase -i將dev的commit們 squash(壓縮)為一個(gè)commit(主要目的是生成一個(gè)新的commit哈希),然后再去rebase main分支即可,實(shí)測(cè)效果拔群??再也不用擔(dān)心類似的問題了!

Demo復(fù)現(xiàn)該問題

  • 初始狀態(tài):基于main分支切了dev分支并開發(fā)

  • dev合并到main后

  • 發(fā)現(xiàn)bug,在main上進(jìn)行回滾

  • 在dev上做bugfix并測(cè)試OK

  • dev重新合并到main

到這里問題來了,我們希望得到的main分支效果應(yīng)該相當(dāng)于以下分支:

c0 <- c1 <- c2 <- c3 <- c4

但由于c2 c3被revert掉(改動(dòng)內(nèi)容消失了),卻已經(jīng)存在于main上(重新合并時(shí)main分支認(rèn)為已經(jīng)合過它倆,于是拒絕重復(fù)引入c2 c3),所以到第5步得到的效果實(shí)際相當(dāng)于:

c0 <- c1 <- c4

這就是標(biāo)題所說「Git Revert之后再次合代碼無效」的問題

用Squash方式解決該問題

在上述Demo的步驟4基礎(chǔ)上改

1、切到dev執(zhí)行g(shù)it rebase -i,讓它自己rebase自己,目的是把dev上多個(gè)commit squash(壓縮合并)為一個(gè)commit,這個(gè)新commit將具有新的哈希值(這樣main分支就不會(huì)拒絕它了)

我們希望將c2 c3 c4合并(即dev分支上完整的變更內(nèi)容),假設(shè)c2的哈希值為c2_hash,需要執(zhí)行以下shell命令

$ git checkout dev
$ git rebase -i c2_hash

2、彈出的vi編輯界面如下,根據(jù)提示squash掉dev上的commit

3、填寫commit信息,dev squash完成,效果如下

4、再用dev去rebase main分支,此時(shí)我們可以徹底忘掉git revert的黑歷史,就像將一個(gè)新鮮出爐的功能分支rebase主分支一樣,有沖突解決沖突即可

5. 再次將dev合并到main即可,完美收官!

小結(jié)

解決git revert副作用問題,網(wǎng)上主流的方法是:

  • 在main分支找到之前revert的commit(可能有多個(gè),如果是多人協(xié)作則還可能分散)
  • 將之前的revert再次進(jìn)行revert
  • 合dev分支,解決沖突

本文介紹的方法是:

  • 在dev分支上找功能代碼涉及的commit(開發(fā)分支上一般是連續(xù)的幾個(gè)commit,容易找)
  • 將這些commit壓縮合并為一個(gè)
  • dev分支rebase到main分支,解決沖突

個(gè)人比較傾向于本文這種做法,一則處理起來比較舒服,完全不用去關(guān)心之前的revert記錄;

二則看起來舒服,處理完之后dev分支較main分支只會(huì)多一個(gè)commit,這個(gè)commit包含dev上的所有功能代碼變更

以上就是解決Git Revert 再次合代碼無效問題的詳細(xì)內(nèi)容,更多關(guān)于Git Revert 合代碼無效的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Git 常用命令清單(整理且詳細(xì))

    Git 常用命令清單(整理且詳細(xì))

    git我每天幾乎都在使用,但是很多命令還是記不住,下面小編給大家分享了Git 常用命令清單,感興趣的朋友一起看看吧
    2017-10-10
  • 使用Postman測(cè)試需要授權(quán)的接口問題

    使用Postman測(cè)試需要授權(quán)的接口問題

    Postman是一款免費(fèi)的http模擬請(qǐng)求工具,常用來測(cè)試開發(fā)接口。實(shí)際場(chǎng)景中,很多接口是需要授權(quán)才能使用,這篇文章主要介紹了用Postman測(cè)試需要授權(quán)的接口,需要的朋友可以參考下
    2022-06-06
  • 基于QGIS的研究區(qū)域遙感影像裁切下載方法(以岳麓區(qū)為例)

    基于QGIS的研究區(qū)域遙感影像裁切下載方法(以岳麓區(qū)為例)

    本文以湖南省長(zhǎng)沙市岳麓區(qū)為例,主要講解如何基于QGIS這款軟件,把岳麓區(qū)范圍內(nèi)的遙感影像下載,并使用QGIS進(jìn)行切片,最后用Leaflet進(jìn)行展示的例子,對(duì)QGIS遙感影像裁切下載相關(guān)知識(shí)感興趣的朋友跟隨小編一起看看吧
    2024-05-05
  • 遇到不能復(fù)制的網(wǎng)站怎么辦?

    遇到不能復(fù)制的網(wǎng)站怎么辦?

    有時(shí)我們看到喜歡的網(wǎng)頁內(nèi)容時(shí)定會(huì)產(chǎn)生復(fù)制下來為我所用的沖動(dòng),不過當(dāng)你點(diǎn)擊鼠標(biāo)時(shí)它卻沒有任何反應(yīng),選擇的內(nèi)容沒有任何變化,不禁有點(diǎn)掃興。不要緊,辦法總比困難多!
    2009-06-06
  • POST與GET方法的區(qū)別簡(jiǎn)要分析

    POST與GET方法的區(qū)別簡(jiǎn)要分析

    原理介紹:理論上說,GET是從服務(wù)器上請(qǐng)求數(shù)據(jù),POST是發(fā)送數(shù)據(jù)到服務(wù)器。事實(shí)上,GET方法是把數(shù)據(jù)參數(shù)隊(duì)列(query string)加到一個(gè)URL上,值和表單是一一對(duì)應(yīng)的。
    2008-10-10
  • chatGPT與傳統(tǒng)搜索結(jié)合創(chuàng)建新一代搜索引擎

    chatGPT與傳統(tǒng)搜索結(jié)合創(chuàng)建新一代搜索引擎

    這篇文章主要為大家介紹了chatGPT與傳統(tǒng)搜索結(jié)合創(chuàng)建新一代搜索引擎優(yōu)點(diǎn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • git在idea中的沖突解決方法(非常重要)

    git在idea中的沖突解決方法(非常重要)

    這篇文章主要介紹了git在idea中的沖突解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 詳解VSCode打開多個(gè)項(xiàng)目文件夾的解決方法

    詳解VSCode打開多個(gè)項(xiàng)目文件夾的解決方法

    這篇文章主要介紹了詳解VSCode打開多個(gè)項(xiàng)目文件夾的解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • git切換到指定遠(yuǎn)程分支的方法

    git切換到指定遠(yuǎn)程分支的方法

    這篇文章主要介紹了git切換到指定遠(yuǎn)程分支的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 多端登錄如何實(shí)現(xiàn)踢人下線需求實(shí)現(xiàn)

    多端登錄如何實(shí)現(xiàn)踢人下線需求實(shí)現(xiàn)

    這篇文章主要為大家介紹了多端登錄如何實(shí)現(xiàn)踢人下線的需求實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05

最新評(píng)論

元阳县| 南昌县| 广宗县| 崇义县| 淅川县| 沾化县| 乐昌市| 嘉善县| 华宁县| 兴和县| 松滋市| 腾冲县| 永宁县| 呼和浩特市| 金昌市| 常熟市| 信阳市| 永登县| 额敏县| 精河县| 民县| 桃江县| 大田县| 杨浦区| 枣庄市| 老河口市| 阳朔县| 巴林右旗| 稻城县| 唐河县| 黄浦区| 霍城县| 丰城市| 巴林右旗| 区。| 永胜县| 七台河市| 霍州市| 武平县| 渭源县| 东方市|