日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

git revert 后再次merge_git如何回滚错误合并的分支

發(fā)布時(shí)間:2023/12/4 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 git revert 后再次merge_git如何回滚错误合并的分支 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

導(dǎo)讀:

分類:技術(shù)干貨

題目:git如何回滾錯(cuò)誤合并的分支

合并到線上分支出現(xiàn)問題的修復(fù)方式。

場景

線上分支:master

你開發(fā)的分支:dev1

同時(shí)開發(fā)的分支:dev2

dev1分支開發(fā)的代碼已經(jīng)上線,并且已經(jīng)merge到master

同時(shí)dev2分支也已上線,并且已經(jīng)merge到master

這時(shí)發(fā)現(xiàn)dev1的巨大bug,線上版本要把這個(gè)分支的代碼全部移除。

想要達(dá)到的效果

我們要撤銷所有dev1的合并,并且保留dev2的代碼。

同時(shí)本地dev1的分支不想刪除這些代碼,還有在這基礎(chǔ)上開發(fā)。

master分支

如果使用reset,那么線上的幾個(gè)提交記錄都不會保留,達(dá)不到我們想要的效果。

這里使用git revert。

首先我們要撤銷所有dev1的更改,找到dev1的兩次commit id

git revert 63db9b1228c9e38a015513f834a42fa55002fca8

git revert a407174c5df3e47e1866663e4c3fe611419eb5a8

此時(shí)master已經(jīng)達(dá)到我們想要的效果:

開發(fā)分支

這時(shí)回到我們的dev1分支,修復(fù)bug,我還要保留以前提交的代碼。

但是在上線前總要先merge master,但是master的兩次revert是領(lǐng)先你的,一旦merge后你的代碼就沒有了。

下面是當(dāng)前dev1的提交情況

所以我們要在merge master后,再使用revert撤銷這次merge。

但是這時(shí)你發(fā)現(xiàn),在merge完master之后你又在這個(gè)分支提交了新代碼,這時(shí)revert就會報(bào)錯(cuò):

git revert ce479b597de6025da4a67ddd4a94d1b8034d8c67

error: commit ce479b597de6025da4a67ddd4a94d1b8034d8c67 is a merge but no -m option was given.

fatal: revert failed

這是因?yàn)槌蜂N的是一次合并,git不知道要保存這兩個(gè)分支中哪個(gè)的修改。

-m 1 表示保留當(dāng)前分支的更改

-m 2 表示保留master更改

我們目的是為了保留dev1的代碼,所以要保留當(dāng)前代碼,即使用 -m 1

git revert -m 1

ce479b597de6025da4a67ddd4a94d1b8034d8c67

[dev1 bb363fa] Revert "Merge branch 'master' into dev1"

2 files changed, 0 insertions(+), 0 deletions(-)

rename dev2 add => b (100%)

create mode 100644 c

執(zhí)行完上面的代碼,我們就會發(fā)現(xiàn),代碼又回來了,和master沒有回滾前的代碼一樣。

修完bug,再把當(dāng)前代碼合并到master,然后你就會發(fā)現(xiàn),dev2提交的代碼被你的merge干掉了???

這是因?yàn)槟愕哪谴蝦ever合并采用了你的分支代碼,但是你的dev1分支并沒有dev2的代碼...

所以我們應(yīng)該在master回滾前,回到dev1分支,先merge一次最新代碼,再執(zhí)行后面的操作。

總結(jié)

總結(jié)起來流程很簡單。

1.保持你要開發(fā)的分支同步了master最新代碼。

2.revert所有該分支的提交。

3.回到你的分支merge master。

4.revert merge master的那次提交。

總結(jié)

以上是生活随笔為你收集整理的git revert 后再次merge_git如何回滚错误合并的分支的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。