站長資訊網
        最全最豐富的資訊網站

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

        本篇文章給大家帶來了關于Git回滾代碼的相關知識,Git是一個開源的分布式版本控制系統,可以有效、高速地處理從很小到非常大的項目版本管理,希望對大家有幫助。

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

        在日常coding的過程中免不了分支之間的合并,回滾、提交、打tag等操作,如果你現在還不知道怎么使用git工具回滾代碼,或者總是擔心出錯沒有把握怕把代碼搞丟,這很危險畢竟代碼搞丟是很大的事情小則扣績效重則多扣點,但是 dont worry,你很幸運能看到這篇文章,當你看完以后就不會在有代碼丟失的情況,因為我會帶你手把手建分支模擬回滾的常見情況

        介紹

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

        前言

        在日常的代碼回滾中常用的有兩種方式git revertgit reset來進行回滾,這兩種分別對應的不同的情況我盡量簡單明了的介紹這兩個命令都能做些什么,接下來我會從個人倉庫新拉個分支從0開始,建兩個分支,分別是主分支master和開發分支develop來進行模擬

        reset介紹

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

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

        3、這個命令大概率的情況都是用在我們主分支的,因為我們上線的分支一般是master分支然后從develop進行功能開發

        4、開發完成之后將分支合并到master,如果在上線之前發現合并的分支用問題可以將develop合并過來的分支進行回滾

        5、說白了就是取消develop的本次合并

        6、但是有一種情況就是協作開發的時候大家都合并到master之后就不能用reset強行回滾commit因為這樣會把其他人的提交記錄給沖掉,這時候就可以用revert來進行操作我們在下面說

        制造一個分支模擬環境

        1.從你自己的git倉庫創建一個新項目之后拉到本地

        2.創建一個index.js隨便寫點東西,之后提交到倉庫

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

        3.我們在終端使用git log查看commit可以看到目前只有一個剛才提交的commit

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

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

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

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

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

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

        7.看下develop分支和master分支最新的commit記錄對比,可以看到dev分支領先master分支兩個commit

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

        注意這里有個問題當你進行分支合并的時候,有時候會發現雖然代碼不一樣但是在進行分支合并的時候就提示代碼沒有更新,就是因為當前的開發分支的commit記錄是落后于要合并的目標分支的,造成這種情況的原因就是reset濫用造成的,所以reset一定要慎用

        操作一下reset來感受一下

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

        2.我們在master分支使用git log查看commit記錄找到B記錄,準備回滾這一條,回滾的時候不需要輸入全部的commid一般是前7位就夠用

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

        3.重點來了我們使用git reset 69fde2c進行回滾,這個時候查看log記錄發現最后一條新增c記錄沒有了,這里還有個問題如果直接使用git push推送會有以下提示。

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

        這是因為本地的記錄因為我們的回滾已經落后于倉庫的代碼了,這個使用需要使用git push -f進行強制提交

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

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

        revert介紹

        1、revert的原理是,在當前提交后面,新增一次提交,抵消掉上一次提交導致的所有變化。它不會改變過去的歷史,所以是首選方式,沒有任何丟失代碼的風險

        2、revert可以抵消上一個提交,那么如果想要抵消多個需要執行 git revert 倒數第一個commit id 倒數第二個commit

        3、這個就常用于當你提交了一次commit之后發現提交的可能有問題就可以用到revert

        4、還有一種情景是已經有很多人提交過代碼,但是想改之前的某一次commit記錄又不想影響后面的也可以使用revert,他會把你后面提交的記錄都放到工作區只是合并的時候需要注意一點

        我們來模擬一下環境

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

        2.我們使用rever進行回滾試一下git revert 16083ce,如果你也用的是vs code可以看到工作區的變化,并且在控制臺可以提交默認的commit

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

        3.看一下log記錄,可以看到新增了一個記錄Revert 新增C,并且原來的新增C還是在的

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

        commit記錄打tag

        1、在上線之前我們需要對當前的commit記錄打一個tag方便上線的代碼有問題可以及時回滾

        我們來介紹一下常用的幾個命令

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

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

        2.創建一個tag,使用git tag [name],我們新增一個 git tag 測試4,在使用git tag 查看一下

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

        3.查看tag對應的commit信息,git show [tag名字],舉個例子git show 測試1,上線之后如果有問題我們就可以根據 下圖的commit id進行代碼回滾

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

        結束

        git管理工具在我們日常中可以說是天天都在用,所以對于常見的問題場景對應的方法一定要牢牢地掌握免得遇到的時候顯得捉襟見肘

        推薦學習:《Git教程》

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 你懂的国产精品| 日本久久久精品中文字幕| 精品卡一卡二卡乱码高清| 国产精品国产高清国产专区| 人人妻人人澡人人爽欧美精品| 国产精品无码专区在线观看| 99精品国产高清一区二区麻豆| 亚洲av午夜国产精品无码中文字 | 下载天堂国产AV成人无码精品网站| 精品久人妻去按摩店被黑人按中出| 久久精品国产网红主播| 国产精品亚洲高清一区二区| 国产精品成人观看视频国产奇米| 欧美精品一二区| 国产精品欧美一区二区三区不卡| 最新国产精品拍自在线观看| 国产日韩高清三级精品人成| 97人妻无码一区二区精品免费| 亚洲国产精品人人做人人爱| 国产精品v欧美精品v日韩| 国产乱码精品一区二区三区中文| 合区精品中文字幕| 99久久精品国产一区二区蜜芽| 国产精品无码无卡在线播放| 亚洲欧美日韩精品专区| 国产精品区AV一区二区| 麻豆精品成人免费国产片| 国产精品视频第一区二区三区 | 福利姬在线精品观看| 亚洲一区无码精品色| 国产精品一区二区av不卡| 久久福利青草精品资源站| 久久亚洲欧美国产精品| 日本精品久久久久久久久免费| 国产精品男男视频一区二区三区| 精品国产污污免费网站| 国产午夜精品久久久久免费视| 亚洲愉拍99热成人精品热久久| 欧美成人精品第一区二区| 欧美+亚洲+精品+三区| 国产小视频国产精品|