站長(zhǎng)資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        帶你搞懂git回滾代碼(實(shí)例詳解)

        本篇文章給大家?guī)?lái)了關(guān)于Git回滾代碼的相關(guān)知識(shí),Git是一個(gè)開源的分布式版本控制系統(tǒng),可以有效、高速地處理從很小到非常大的項(xiàng)目版本管理,希望對(duì)大家有幫助。

        帶你搞懂git回滾代碼(實(shí)例詳解)

        在日常coding的過(guò)程中免不了分支之間的合并,回滾、提交、打tag等操作,如果你現(xiàn)在還不知道怎么使用git工具回滾代碼,或者總是擔(dān)心出錯(cuò)沒(méi)有把握怕把代碼搞丟,這很危險(xiǎn)畢竟代碼搞丟是很大的事情小則扣績(jī)效重則多扣點(diǎn),但是 dont worry,你很幸運(yùn)能看到這篇文章,當(dāng)你看完以后就不會(huì)在有代碼丟失的情況,因?yàn)槲視?huì)帶你手把手建分支模擬回滾的常見情況

        介紹

        Git(讀音為/g?t/)是一個(gè)開源的分布式版本控制系統(tǒng),可以有效、高速地處理從很小到非常大的項(xiàng)目版本管理。

        前言

        在日常的代碼回滾中常用的有兩種方式git revertgit reset來(lái)進(jìn)行回滾,這兩種分別對(duì)應(yīng)的不同的情況我盡量簡(jiǎn)單明了的介紹這兩個(gè)命令都能做些什么,接下來(lái)我會(huì)從個(gè)人倉(cāng)庫(kù)新拉個(gè)分支從0開始,建兩個(gè)分支,分別是主分支master和開發(fā)分支develop來(lái)進(jìn)行模擬

        reset介紹

        1、reset的作用是當(dāng)你希望提交的commit從歷史記錄中完全消失就可以用

        2、比如你在master分支提交了A-->B-->C提交了三個(gè)記錄,這個(gè)時(shí)候如果C記錄有問(wèn)題你想回滾到B就可以用git reset進(jìn)行

        3、這個(gè)命令大概率的情況都是用在我們主分支的,因?yàn)槲覀兩暇€的分支一般是master分支然后從develop進(jìn)行功能開發(fā)

        4、開發(fā)完成之后將分支合并到master,如果在上線之前發(fā)現(xiàn)合并的分支用問(wèn)題可以將develop合并過(guò)來(lái)的分支進(jìn)行回滾

        5、說(shuō)白了就是取消develop的本次合并

        6、但是有一種情況就是協(xié)作開發(fā)的時(shí)候大家都合并到master之后就不能用reset強(qiáng)行回滾commit因?yàn)檫@樣會(huì)把其他人的提交記錄給沖掉,這時(shí)候就可以用revert來(lái)進(jìn)行操作我們?cè)谙旅嬲f(shuō)

        制造一個(gè)分支模擬環(huán)境

        1.從你自己的git倉(cāng)庫(kù)創(chuàng)建一個(gè)新項(xiàng)目之后拉到本地

        2.創(chuàng)建一個(gè)index.js隨便寫點(diǎn)東西,之后提交到倉(cāng)庫(kù)

        帶你搞懂git回滾代碼(實(shí)例詳解)

        3.我們?cè)诮K端使用git log查看commit可以看到目前只有一個(gè)剛才提交的commit

        帶你搞懂git回滾代碼(實(shí)例詳解)

        4.我們從master分支遷出一個(gè)develop分支git branch develop,并且切換到該分支 git checkout develop

        5.在develop分支新增一段代碼,這個(gè)時(shí)候develop的commit記錄就新增了一條B的記錄

        帶你搞懂git回滾代碼(實(shí)例詳解)

        6.在develop分支接著新增一段代碼

        帶你搞懂git回滾代碼(實(shí)例詳解)

        7.看下develop分支和master分支最新的commit記錄對(duì)比,可以看到dev分支領(lǐng)先master分支兩個(gè)commit

        帶你搞懂git回滾代碼(實(shí)例詳解)帶你搞懂git回滾代碼(實(shí)例詳解)

        注意這里有個(gè)問(wèn)題當(dāng)你進(jìn)行分支合并的時(shí)候,有時(shí)候會(huì)發(fā)現(xiàn)雖然代碼不一樣但是在進(jìn)行分支合并的時(shí)候就提示代碼沒(méi)有更新,就是因?yàn)楫?dāng)前的開發(fā)分支的commit記錄是落后于要合并的目標(biāo)分支的,造成這種情況的原因就是reset濫用造成的,所以reset一定要慎用

        操作一下reset來(lái)感受一下

        1.我們將develop分支的代碼合并到master,切換到master分支 執(zhí)行git merge develop

        2.我們?cè)趍aster分支使用git log查看commit記錄找到B記錄,準(zhǔn)備回滾這一條,回滾的時(shí)候不需要輸入全部的commid一般是前7位就夠用

        帶你搞懂git回滾代碼(實(shí)例詳解)

        3.重點(diǎn)來(lái)了我們使用git reset 69fde2c進(jìn)行回滾,這個(gè)時(shí)候查看log記錄發(fā)現(xiàn)最后一條新增c記錄沒(méi)有了,這里還有個(gè)問(wèn)題如果直接使用git push推送會(huì)有以下提示。

        帶你搞懂git回滾代碼(實(shí)例詳解)

        這是因?yàn)楸镜氐挠涗浺驗(yàn)槲覀兊幕貪L已經(jīng)落后于倉(cāng)庫(kù)的代碼了,這個(gè)使用需要使用git push -f進(jìn)行強(qiáng)制提交

        4.這個(gè)時(shí)候master分支就剩下A和B的commit記錄了,到這里就是一次完整的reset回滾記錄,之后我們還是可以繼續(xù)正常把develop分支合并到master的

        帶你搞懂git回滾代碼(實(shí)例詳解)

        revert介紹

        1、revert的原理是,在當(dāng)前提交后面,新增一次提交,抵消掉上一次提交導(dǎo)致的所有變化。它不會(huì)改變過(guò)去的歷史,所以是首選方式,沒(méi)有任何丟失代碼的風(fēng)險(xiǎn)

        2、revert可以抵消上一個(gè)提交,那么如果想要抵消多個(gè)需要執(zhí)行 git revert 倒數(shù)第一個(gè)commit id 倒數(shù)第二個(gè)commit

        3、這個(gè)就常用于當(dāng)你提交了一次commit之后發(fā)現(xiàn)提交的可能有問(wèn)題就可以用到revert

        4、還有一種情景是已經(jīng)有很多人提交過(guò)代碼,但是想改之前的某一次commit記錄又不想影響后面的也可以使用revert,他會(huì)把你后面提交的記錄都放到工作區(qū)只是合并的時(shí)候需要注意一點(diǎn)

        我們來(lái)模擬一下環(huán)境

        1.切到develop分支現(xiàn)在該分支有三個(gè)commit記錄帶你搞懂git回滾代碼(實(shí)例詳解)

        2.我們使用rever進(jìn)行回滾試一下git revert 16083ce,如果你也用的是vs code可以看到工作區(qū)的變化,并且在控制臺(tái)可以提交默認(rèn)的commit

        帶你搞懂git回滾代碼(實(shí)例詳解)

        3.看一下log記錄,可以看到新增了一個(gè)記錄Revert 新增C,并且原來(lái)的新增C還是在的

        帶你搞懂git回滾代碼(實(shí)例詳解)

        commit記錄打tag

        1、在上線之前我們需要對(duì)當(dāng)前的commit記錄打一個(gè)tag方便上線的代碼有問(wèn)題可以及時(shí)回滾

        我們來(lái)介紹一下常用的幾個(gè)命令

        1.git tag列出所有的tag列表

        帶你搞懂git回滾代碼(實(shí)例詳解)

        2.創(chuàng)建一個(gè)tag,使用git tag [name],我們新增一個(gè) git tag 測(cè)試4,在使用git tag 查看一下

        帶你搞懂git回滾代碼(實(shí)例詳解)

        3.查看tag對(duì)應(yīng)的commit信息,git show [tag名字],舉個(gè)例子git show 測(cè)試1,上線之后如果有問(wèn)題我們就可以根據(jù) 下圖的commit id進(jìn)行代碼回滾

        帶你搞懂git回滾代碼(實(shí)例詳解)

        結(jié)束

        git管理工具在我們?nèi)粘V锌梢哉f(shuō)是天天都在用,所以對(duì)于常見的問(wèn)題場(chǎng)景對(duì)應(yīng)的方法一定要牢牢地掌握免得遇到的時(shí)候顯得捉襟見肘

        推薦學(xué)習(xí):《Git教程》

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
        主站蜘蛛池模板: 国产成人精品综合网站| 精品久久久无码中文字幕天天| 国产精品免费在线播放| 亚洲国产精品VA在线看黑人| 99亚洲精品视频| 国产精品宾馆在线精品酒店| 亚洲精品无码成人片久久| 精品亚洲一区二区三区在线观看| 青青草精品视频| 国产2021精品视频免费播放| 日韩精品无码AV成人观看| 亚洲国产精品13p| 精品久久久久一区二区三区| 99久久精品国产一区二区蜜芽| 国产精品久久久久天天影视| 国产亚洲精品精华液| 在线精品亚洲一区二区三区| 热RE99久久精品国产66热| 国产精品青草视频免费播放| 亚洲国产精品不卡在线电影| 国产成人精品久久一区二区三区| 精品无码人妻一区二区免费蜜桃 | 91精品国产9l久久久久| 久久精品国产亚洲AV高清热| 日产精品久久久久久久性色| 伊在人亚洲香蕉精品区麻豆| 在线精品国产一区二区三区| 一本色道久久综合亚洲精品| 亚洲性日韩精品国产一区二区 | 国产精品爽爽ⅴa在线观看| 日韩精品成人一区二区三区| 国内精品51视频在线观看| 2021久久精品国产99国产精品| 国产精品99久久免费观看| 日本VA欧美VA精品发布| 日韩精品一区二区三区中文| 久久久久久九九99精品| 久久国产精品77777| 国产午夜精品一区二区三区| 国产精品人人爽人人做我的可爱| 精品麻豆丝袜高跟鞋AV|