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

git中reset和revert區(qū)別小結(jié)

 更新時(shí)間:2023年06月21日 11:09:53   作者:Alan0517  
本文主要介紹了git中reset和revert區(qū)別小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

1. 案例

線上master分支不可信,需要回到某個(gè)分支;
但是很多人習(xí)慣把一個(gè)需求,分多次commit,于是會出現(xiàn)下面這種情況

基于這種情況,git revert 就不如 git reset好用,可以借助Idea,直接通過 git reset --hard 指向需要回退到的commit,然后隨便找個(gè)地方,敲上一個(gè)空格,產(chǎn)生一次新的commit id,即可達(dá)到效果;

2. git的 reset 和 revert 有啥區(qū)別?

2.1 問題背景

在某一次的上線中,發(fā)現(xiàn)有的同學(xué),上線之后發(fā)現(xiàn)master 分支存在bug,線上回滾之后,在處理git倉庫回滾分支時(shí),因分不清
reset(重置)、revert(恢復(fù)) 兩者的區(qū)別,使用git reset回退之后,再與master merge時(shí),發(fā)現(xiàn)master無變化,因?yàn)樽鳛榇舜我氚咐窒硪徊ǎ?/p>

先簡單說一下,在提交到遠(yuǎn)程庫之前我們使用git reset 命令完全可以滿足我們 撤銷操作的需求,如果操作已經(jīng)提交到遠(yuǎn)程庫,那只好使用 git revert 來提交一個(gè)新的撤銷操作 撤銷 需要撤銷的那次commit。

2.2 git的工作流

  • 工作區(qū):即自己當(dāng)前分支所修改的代碼,git add xx 之前的!不包括 git add xx 和 git commit xxx 之后的。
  • 暫存區(qū):已經(jīng) git add xxx 進(jìn)去,且未 git commit xxx 的。
  • 本地分支:已經(jīng)git commit -m xxx 提交到本地分支的。

在將文件提交至遠(yuǎn)程端時(shí),文件的提交需要經(jīng)過git add、git commit及git push三個(gè)過程才能提交至git遠(yuǎn)程倉庫。
我們平時(shí)修改文件在工作目錄中,提交時(shí)先使用git add提交至?xí)捍鎱^(qū),再通過git commit提交至本地倉庫,最后才能使用git push提交至遠(yuǎn)程倉庫。

2.2.1 在工作區(qū)的代碼

git checkout -- . # 丟棄全部

注意:git checkout – . 丟棄全部,也包括:新增的文件會被刪除、刪除的文件會恢復(fù)回來、修改的文件會回去。這幾個(gè)前提都說的是,回到暫存區(qū)之前的樣子。對之前保存在暫存區(qū)里的代碼不會有任何影響。對commit提交到本地分支的代碼就更沒影響了。當(dāng)然,如果你之前壓根都沒有暫存或commit,那就是回到你上次pull下來的樣子了。

2.2.2 代碼git add到緩存區(qū),并未commit提交

git reset HEAD .  或者
git reset HEAD a.txt

這個(gè)命令僅改變暫存區(qū),并不改變工作區(qū),這意味著在無任何其他操作的情況下,工作區(qū)中的實(shí)際文件同該命令運(yùn)行之前無任何變化

2.2.3 git commit到本地分支、但沒有g(shù)it push到遠(yuǎn)程

git log # 得到你需要回退一次提交的commit id
git reset --hard <commit_id>  # 回到其中你想要的某個(gè)版
或者
git reset --hard HEAD^  # 回到最新的一次提交
或者
git reset HEAD^  # 此時(shí)代碼保留,回到 git add 之前

2.2.4 git push把修改提交到遠(yuǎn)程倉庫

2.2.4.1 通過git reset是直接刪除指定的commit

git log # 得到你需要回退一次提交的commit id
git reset --hard <commit_id>
git push origin HEAD --force 
# 強(qiáng)制提交一次,之前錯(cuò)誤的提交就從遠(yuǎn)程倉庫刪除

2.2.4.2 通過git revert是用一次新的commit來回滾之前的commit

git log # 得到你需要回退一次提交的commit id
git revert <commit_id>  # 撤銷指定的版本,撤銷也會作為一次提交進(jìn)行保存
git commit -m "......." 
git push 

2.3 reset

git reset中有三個(gè)命令(–hard、–soft與–mixed);主要用于工作區(qū)、暫存區(qū)、本地倉庫三個(gè)區(qū)域的文件提交撤回

git reset --hard xxx

hard (修改版本庫,修改暫存區(qū),修改工作區(qū))

  • –hard HEAD~1 (或是版本號)意為將版本庫回退1個(gè)版本,但是不僅僅是將本地版本庫的頭指針全部重置到指定版本,也會重置暫存區(qū),并且會將工作區(qū)代碼也回退到這個(gè)版本;
git reset --soft xxx

soft (修改版本庫,保留暫存區(qū),保留工作區(qū))

  • –soft HEAD~1 意為將版本庫軟回退1個(gè)版本,所謂軟回退表示將本地版本庫的頭指針全部重置到指定版本,且將這次提交之后的所有變更都移動(dòng)到暫存區(qū)。

2.4 revert

git revert xxx

– git revert 也是撤銷命令,區(qū)別在于reset是指向原地或者向前移動(dòng)指針,git revert是創(chuàng)建一個(gè)commit來覆蓋當(dāng)前的commit,指針向后移動(dòng)。

2.5 git revert 和 git reset的區(qū)別

  • git revert是用一次新的commit來回滾之前的commit,此次提交之前的commit都會被保留;
  • git reset是回到某次提交,提交及之前的commit都會被保留,但是此commit id之后的修改都會被刪除;
  • git revert是用一次新的commit來回滾之前的commit,git reset是直接刪除指定的commit。
  • 在回滾這一操作上看,效果差不多。但是在日后繼續(xù)merge以前的老版本時(shí)有區(qū)別。因?yàn)間it revert是用一次逆向的commit“中和”之前的提交,因此日后合并老的branch時(shí),導(dǎo)致這部分改變不會再次出現(xiàn),但是git reset是之間把某些commit在某個(gè)branch上刪除,因而和老的branch再次merge時(shí),這些被回滾的commit應(yīng)該還會被引入。
  • git reset 是把HEAD向后移動(dòng)了一下,而git revert是HEAD繼續(xù)前進(jìn),只是新的commit的內(nèi)容和要revert的內(nèi)容正好相反,能夠抵消要被revert的內(nèi)容。

通俗易懂的說呢,就是git revert 是回滾當(dāng)前此次的commit,回到上一個(gè)狀態(tài),就好比咱們習(xí)慣性用的Ctrl+z; 而git reset 是回到歷史某個(gè)版本,它的commit是舊的,是歷史的,而git revert 會產(chǎn)生新的commit,就這么回事

到此這篇關(guān)于git中reset和revert區(qū)別小結(jié)的文章就介紹到這了,更多相關(guān)git reset revert內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 寫給正在讀計(jì)算機(jī)專業(yè)的同學(xué) 該如何學(xué)習(xí)

    寫給正在讀計(jì)算機(jī)專業(yè)的同學(xué) 該如何學(xué)習(xí)

    現(xiàn)在IT新技術(shù)日新月異。就常用編程語言而言,有c/c++、匯編、java,c#、Python等;操作系統(tǒng)平臺有unix/linux,windows系列
    2009-11-11
  • 十分鐘內(nèi)學(xué)會 避免用戶刷新導(dǎo)致重復(fù)POST提交

    十分鐘內(nèi)學(xué)會 避免用戶刷新導(dǎo)致重復(fù)POST提交

    在Web應(yīng)用中,采用POST提交信息是非常常見的,然而如果目標(biāo)頁面打開得太慢,用戶就可能會刷新頁面,這時(shí)候之前已經(jīng)提交過的信息就會被重復(fù)提交。
    2009-08-08
  • git?clone報(bào)錯(cuò)SSL?connect?error解決

    git?clone報(bào)錯(cuò)SSL?connect?error解決

    這篇文章主要為大家介紹了git?clone報(bào)錯(cuò)SSL?connect?error解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • Azkaban報(bào)錯(cuò)-azkaban.executor.ExecutorManagerException: No active executors found

    Azkaban報(bào)錯(cuò)-azkaban.executor.ExecutorManagerException: No acti

    這篇文章主要介紹了Azkaban報(bào)錯(cuò)-azkaban.executor.ExecutorManagerException: No active executors found,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2020-05-05
  • vs2019生成dll并調(diào)用的實(shí)現(xiàn)示例

    vs2019生成dll并調(diào)用的實(shí)現(xiàn)示例

    這篇文章主要介紹了vs2019生成dll并調(diào)用的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • Web通信 分析工具 [推薦]

    Web通信 分析工具 [推薦]

    在抓蝦上看到一篇Web開發(fā)分析工具的文章(鏈接就免了),怎么遠(yuǎn)沒有我用的東西好用呢? 還是介紹介紹我用的吧。由于平常開發(fā)只用FireFox,完成后再去調(diào)試IE, 所以這些工具絕大部分是針對FireFox的。
    2009-04-04
  • Win10環(huán)境下?編譯?和?運(yùn)行?x264的詳細(xì)過程

    Win10環(huán)境下?編譯?和?運(yùn)行?x264的詳細(xì)過程

    這篇文章主要介紹了Win10環(huán)境下編譯和運(yùn)行x264的詳細(xì)過程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-10-10
  • 詳解git的基本使用方法

    詳解git的基本使用方法

    這篇文章主要介紹了詳解git的基本使用方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • volatile保證可見性及重排序方法

    volatile保證可見性及重排序方法

    這篇文章主要為大家介紹了volatile保證可見性及重排序方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • Git多人協(xié)同開發(fā)緊急修復(fù)線上bug操作指南

    Git多人協(xié)同開發(fā)緊急修復(fù)線上bug操作指南

    這篇文章主要為大家介紹了Git多人協(xié)同開發(fā)緊急修復(fù)線上bug操作指南,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06

最新評論

荥阳市| 阿坝县| 海阳市| 汨罗市| 军事| 读书| 济宁市| 大竹县| 建瓯市| 论坛| 新乐市| 金阳县| 诸暨市| 哈密市| 彭山县| 黑山县| 镇康县| 南充市| 昌图县| 开江县| 高碑店市| 和平区| 岳阳县| 蒲江县| 西安市| 肥城市| 焦作市| 无棣县| 上思县| 德令哈市| 余庆县| 万州区| 佛教| 彰化县| 沛县| 什邡市| 南澳县| 垦利县| 镇安县| 奈曼旗| 商水县|