zoukankan      html  css  js  c++  java
  • Git恢复之前版本的两种方法reset和revert

      在多人合作程序开发的过程中,我们有时会出现错误提交的情况,如交叉提交,活着有新代码没有pull直接commit等等一系列情况,此时我们希望能撤销提交操作,让程序回到提交前的样子,本文总结了两种解决方法:回退(reset)、反做(revert)。

    一、RESET命令

    Git reset 命令有三个主要选项:

    git reset --soft; 
    将HEAD引用指向给定提交。索引(暂存区)和工作目录的内容是不变的,在三个命令中对现有版本库状态改动最小。 git reset
    --mixed;
    HEAD引用指向给定提交,并且索引(暂存区)内容也跟着改变,工作目录内容不变,这个命令会将索引(暂存区)变成你刚刚暂存该提交全部变化是的状态,会显示工作目录中有什么修改。 git reset
    --hard;
    HEAD引用指向给定提交,索引(暂存区)内容和工作目录内容都会变给定提交时的状态,也就是在给定提交后所修改的内容都会丢失(没有commit的内容都会清空,所以请慎用哦)。

    具体操作:

    我们先分两种场景,

    场景1:本地commit了,但还没push云端

    场景2:  本地commit后,并且push云端了

    对于场景1:


    1. 查看版本号:
    定位到项目下,使用命令“git log”查看历史提交记录,大概如下:

    2. 根据你的需求,选择上面三种的一种命令将版本回退:

    如果想将上次的提交内容清空,就选择reset hard,否则用默认reset就可以了

    如下:找到你想回到的commit_id,执行

    git reset 42079059ff7fe82d0c6cf9ff0fa5a4cef

    你会发现代码又变为未提交状态了,后面可以修改再提交,或者拉下最新代码避免冲突,再次提交都行。。

    对于场景2:

    对于已经push的稍微复杂点,我们可以用如下两种方式解决

    1、和场景1 一样处理,然后提交的时候要注意下,这会儿用git push是会失败的,因为我们本地库HEAD指向的版本比远程库的要旧;

    所以我们用“git push -f”强制推上去,就可以了。

    2、使用git revert
    原理: git revert是用于“反做”某一个版本,以达到撤销该版本的修改的目的。

    比如,我们commit了三个版本(版本一、版本二、 版本三),突然发现版本二不行(如:有bug),想要撤销版本二,但又不想影响撤销版本三的提交,就可以用 git revert 命令来反做版本二,生成新的版本四,这个版本四里会保留版本三的东西,但撤销了版本二的东西。

    具体操作:

    1.、git log查看版本号:

    2、使用“git revert -n 版本号”反做,版本号就是你想反做的那次commit_id,比如

    git revert -n 8b89621019c9adc6fc4d242cd41daeb13aeb9861

    执行完这个,你会发现你本地生成了逆向代码,就是你反做那次修改的内容全被还原了,下面你就可以直接提交云端了

    (注意: 这里可能会出现冲突,那么需要手动修改冲突的文件)

    over~

  • 相关阅读:
    PHP-xml-1
    BZOJ 1833 ZJOI2010 count 数字计数 数位DP
    运算符总结
    大写和小写转换
    Java基础:泛型
    Codeforces Round #156 (Div. 2)---A. Greg's Workout
    【Git】GitHub for Windows使用(2) 分支
    【Git】GitHub for Windows使用(1)
    【java JVM】JVM中类的加载,加载class文件的原理机制
    【FTP】org.apache.commons.net.ftp.FTPClient实现复杂的上传下载,操作目录,处理编码
  • 原文地址:https://www.cnblogs.com/yajunLi/p/6393882.html
Copyright © 2011-2022 走看看