国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

git revert以及revert的恢復(fù)

這篇具有很好參考價(jià)值的文章主要介紹了git revert以及revert的恢復(fù)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一:背景與方案

在工作中遇見的這樣的場景:

場景一:

已經(jīng)merge到待發(fā)布的版本分支中的功能需要移除當(dāng)前的分支,改在后續(xù)版本發(fā)布,示意圖如下,展示的是commit序列,
git revert后怎么恢復(fù),git 工具,運(yùn)維,其他,git,github
這里想要移除的功能是commit_2的,所以需要在不改動其他commit相對順序前提下,將這個(gè)‘瘤’取下,因此這里就絕對不推薦git reset的方式,因?yàn)槿绻鹀ommit_2在末尾可以,如果不在末尾,將導(dǎo)致commit_2后的提交都被清空,這里要使用git revert的方式,像鏈表從中間刪除元素一樣,保持其他提交的順序。

git checkout -b revert_commit origin/master   #從遠(yuǎn)程分支上創(chuàng)建本地的revert分支
git revert commit_2    #注意這里commit_2是指定的提交id,注意這步可能會沖突,因?yàn)橛锌赡芷渌嗽谀氵@個(gè)提交基礎(chǔ)上做了工作,要解決沖突
git add .  #這一步用來解決沖突后添加文件到暫存區(qū),沒有沖突不需要
git commit -m 'revert commmit_2'     #設(shè)置revert的提交信息
git push origin revert_commit:revert_commit     #上傳本地的revert分支
git merge revert_commmit master     #分支合并

場景二:

上一個(gè)版本已經(jīng)定了,如下的commit順序,這里commit_2是虛線表示記錄還在,但是代碼不在,可以理解為commit_2是一個(gè)加法,revert1是針對commit_2的一個(gè)減法。

git revert后怎么恢復(fù),git 工具,運(yùn)維,其他,git,github
問題來了,當(dāng)前master分支上是如上圖所示的提交日志,現(xiàn)在新版本又需要這個(gè)commit_2的代碼了,這里注意有一個(gè)坑的方法,我們也先說坑。
很多人覺得無所謂,我本地更新最新的master分支代碼,恰好我之前寫的commit_2本地還有分支,我直接rebase一下不就可以了嗎?而且應(yīng)該會生成一個(gè)新的commit_5緊接在revert1后面。
問題來了,rebase就是這個(gè)坑,使用rebase變基,相當(dāng)于把你本地的這個(gè)分支(注意和遠(yuǎn)程上的現(xiàn)在側(cè)commit_2合并的分支一個(gè)名字)再次merge一遍,但是你要注意,最新的commit是revert1,是摘除這個(gè)分支的merge請求,會導(dǎo)致你無論rebase多少次,這個(gè)commit_2的代碼都不會出現(xiàn),被revert1抵消掉了,而且會使得你本地的這個(gè)分支也被rebase掉,還需要git reflog&git reset --hard HEAD@{i}恢復(fù)。
解決方法:

方法1:負(fù)負(fù)得正(推薦)

既然revert剔除了我的commit_2提交,那我再revert這次revert,負(fù)負(fù)得正不就行了?確實(shí)有效。
這里注意要找對那個(gè)revert的commit_id

git revert revert1   #注意,還是有可能沖突的,有沖突要解決然后add就不重復(fù)了

執(zhí)行成功后最終本地的commit日志如下,這里commit2的代碼也恢復(fù)了,隨后在push,merge到remote即可
git revert后怎么恢復(fù),git 工具,運(yùn)維,其他,git,github

方法2:新建分支重新提交(不推薦)

這個(gè)方法我其實(shí)不想寫,但是也是寫到rebase坑的時(shí)候想到的,新建一個(gè)不同名的分支,在commit_2代碼量不大的情況下,重新拷貝到新分支上,然后重新提交,merge,這樣繞過了revert1的限制,本質(zhì)上這個(gè)方法就是重寫。

二:工作中的實(shí)際操作(針對場景2)

以下數(shù)據(jù)已經(jīng)經(jīng)過脫敏處理。

git log    #找到revert處
commit f71b258de85679d5cdad395f6d8ac675f9817a1a
Author: leel 
Date:   Wed Nov 9 17:39:13 2022 +0800

    add version 1.0.0

commit 395b7f8fd8b29eefd25e41358f23a71f7ab93184   <------------------這里是上次revert的id
Author: liming 
Date:   Wed Nov 9 17:27:34 2022 +0800

    Revert "update rules"

    This reverts commit 215d734c866ed8adb88e8c33ed6fe624d349a9a8.

commit 23734eb14c7feb19716b6a9aa9fb7aa4c9d4b5f4
Merge: b866e32 246894a
Author: xiaohong 
Date:   Tue Nov 8 11:14:24 2022 +0800

    extended api verification common

commit 246894a619ad61c58dce1a8140196eaabc7e82ca
Author: xiaohong 
Date:   Tue Nov 1 17:43:37 2022 +0800

    extended api verification common
$ git revert 395b7f8fd8b29eefd25e41358f23a71f7ab93184
[cancel_revert_update_rules 4a2b079] Revert "Revert "update rules""
 5 files changed, 78 insertions(+), 57 deletions(-)

發(fā)現(xiàn)沒沖突,而且git log已更新

$ git log
commit 4a2b0796190aa950ab8b9b75367ff80fbb3cd43d
Author: leel
Date:   Thu Dec 22 12:22:30 2022 +0800

    Revert "Revert "update rules""    <--------------------------更新了revert revert 即負(fù)負(fù)得正

    This reverts commit 395b7f8fd8b29eefd25e41358f23a71f7ab93184.

commit b6abc418f808cfcddee25e163299195b9ebde440
Merge: b2dee9d bf1b916
Author: xiaohong
Date:   Wed Dec 21 10:26:54 2022 +0800

    remove side

然后就是常規(guī)的git commit -m&git push 略文章來源地址http://www.zghlxwxcb.cn/news/detail-779542.html

到了這里,關(guān)于git revert以及revert的恢復(fù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 如果不小心git reset --hard了怎么恢復(fù)代碼?

    如果不小心git reset --hard了怎么恢復(fù)代碼?

    1 前言 本來是想把commit的存在緩存區(qū)的代碼刪除,再重新commit一遍的,用了 git reset --hard HEAD^ 這個(gè)命令后,沒想到本地代碼退回到初始版本了,修改過的全部不見了。(悔不當(dāng)初!) 2 解決辦法 前提: git上傳代碼到倉庫add、commit、push,代碼必須是commit過的才有效,只有add不

    2024年02月11日
    瀏覽(21)
  • git revert命令用法詳解

    ????????Git revert 命令用于撤銷最近的提交,其中提交的內(nèi)容是已經(jīng)提交的,但是發(fā)現(xiàn)了一些錯誤或者需要回滾到之前的版本。并且返回代碼到提交之前的狀態(tài)。 下面是 Git revert 命令的一些用法: 1、撤銷單個(gè)提交 ????????其中 commit-hash 是要撤銷的提交的唯一標(biāo)識符。執(zhí)

    2024年02月11日
    瀏覽(47)
  • Git reset、revert用法

    reset是刪除之前的提交記錄,所有的提交點(diǎn)都會被清除,我們看下執(zhí)行前后的git log區(qū)別 執(zhí)行完成后發(fā)現(xiàn)個(gè)人分支第三個(gè)提交好像從來沒有出現(xiàn)過一樣,建議不要使用reset,畢竟會把別人的提交點(diǎn)徹底刪除 revert 將指定提交的代碼給清除掉,提交記錄還存在,相當(dāng)于添加一個(gè)新

    2024年02月10日
    瀏覽(19)
  • 【git】git revert 撤銷已入庫的提交

    回滾沒有入庫的提交,使用git reset 很方便,但是對于入庫的提交,想撤回的話,需要使用git revert 回退庫中最近一次推送的提交: git revert HEAD 回退指定的某次提交: git revert xxxx git revert 命令還有兩個(gè)參數(shù)。 –no-edit:執(zhí)行時(shí)不打開默認(rèn)編輯器,直接使用 Git 自動生成的提交信

    2024年02月12日
    瀏覽(20)
  • git reset 命令詳解 git revert命令詳解。

    git reset 命令詳解 git revert命令詳解。

    git reset 命令格式為: git reset [ --soft | --mixed | --hard ] [ commitid ] 在git的這些命令中g(shù)it reset是最長常用的,也是最危險(xiǎn)的最容易被誤用的。它的主要參數(shù)是:soft,mixed,hard它們告訴git,當(dāng)執(zhí)行reset是,要對index和working copy做什么。 soft: –soft參數(shù)只將其它的commit重置到你選定的HEAD,

    2024年02月15日
    瀏覽(36)
  • 直播預(yù)告 | 開源運(yùn)維工具使用現(xiàn)狀以及可持續(xù)產(chǎn)品的思考

    運(yùn)維平臺自上世紀(jì)90年代開始進(jìn)入中國市場,曾形成以傳統(tǒng)四大外企:IBM、BMC、CA、HP為代表的頭部廠商,還有一眾從網(wǎng)管起家的國內(nèi)廠商。2010年前后,出現(xiàn)了以Zabbix、Nagios、Cacti為代表的開源工具,后來又陸續(xù)出現(xiàn)了Prometheus、Skywalking等開源產(chǎn)品。 在特殊歷史條件下,百家爭

    2024年02月12日
    瀏覽(21)
  • git的 reset 和 revert 區(qū)別

    git的 reset 和 revert 區(qū)別

    線上master分支不可信,需要回到某個(gè)分支; 但是很多人習(xí)慣把一個(gè)需求,分多次commit,于是會出現(xiàn)下面這種情況 基于這種情況,git revert 就不如 git reset好用,可以借助Idea,直接通過 git reset --hard 指向需要回退到的commit,然后隨便找個(gè)地方,敲上一個(gè)空格,產(chǎn)生一次新的commi

    2024年03月21日
    瀏覽(58)
  • git版本回退(git reset、git revert、git stash)

    git版本回退(git reset、git revert、git stash)

    本文 git 相關(guān)命令: git reset: 回退版本,可指定某一次提交的版本。 git reset [--soft | --mixed | --hard] commitId 。 git revert: 撤銷某個(gè)提交,做反向操作,生成新的commitId,原有提交記錄保留。 git revert commitId 。 git commit --amend: git commit –amend 既可以對上次提交的內(nèi)容進(jìn)行修改,也

    2024年02月08日
    瀏覽(56)
  • git 的rebase、reset、revert區(qū)別?

    rebase 、 reset 、和 revert 是 Git 中用于修改提交歷史的三個(gè)不同的命令,它們的作用和效果有所不同。 1. rebase : git rebase 用于將一個(gè)分支的提交移到另一個(gè)分支上,并重新應(yīng)用這些提交。主要有兩種用途: 整理提交歷史 :將多個(gè)小的提交合并成一個(gè)更為清晰的提交歷史,避免

    2024年01月21日
    瀏覽(30)
  • Git命令集合4——用戶界面?zhèn)}庫、命令和文件接口以及開發(fā)者文件格式、協(xié)議和其他接口

    Git命令集合索引目錄 1. attributes - 定義每個(gè)路徑的屬性 解釋: 該命令用于定義每個(gè)路徑的屬性,允許用戶為特定文件或路徑設(shè)置自定義屬性,如文件編碼、行尾格式等。 使用方式: 通過創(chuàng)建名為 .gitattributes 的文件,并按照特定語法設(shè)置路徑或文件的屬性規(guī)則。 導(dǎo)致結(jié)果:

    2024年02月03日
    瀏覽(39)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包