zoukankan      html  css  js  c++  java
  • 关于git回退版本的一点心得

    我由于开发中不小心在master分支上开发,忘记了切换分支,最后我直接在master分支上提交,push,在开发分支上merge了master分支。

    然后,同事告诉我他的代码要准备上线了,然而我的代码还没测试通过肯定不能一起上线,于是,需要回退了。

    平时项目中很少用到回退功能的,一直没有怎么尝试过git  reset 和git revert的区别,记忆也不深刻。

    这次主要使用git  reset。

    $ git reset --hard HEAD^        回退到上个版本
    $ git reset --hard commit_id    退到/进到 指定commit_id
    $ git push --force   强制推送到远程,千万不要拉取,否则又会把最新提交拉下来

    git reset --hard在master回退到之前的某个版本之后,后面的提交记录则都消失了,是完全回退到当时提交的模样。而开发分支上之前合并的master分支的内容是不会跟着回退的,还是最新修改好的代码,可以继续在这基础上开发、测试。

    git reset其他用法体验:

    git reset是不会生成新的提交的,git revert会生成新的提交。

    1、

    git reset --mixed  

    当前head指针指向回退到的提交记录上,后几次提交改变的文件放在了本地暂存区,

    git push

     此时提交会提示本地代码比远程的落后,push失败,改为git push --force 强制push, 会提示不允许强制push

    git push --force

    解决办法如下:

    gitlab如何支持强制push

    然后强制push成功:

    此时代码已变为第二次提交时的两个文件了:

     

    提交记录也恢复到了前两次提交。

     git log可以查看当前存在的两次提交记录,git reflog可以查看所有提交记录:

     

    2、

    git reset --soft 第四次提交的commit

    文件全部恢复,本地暂存区有记录。

    3、

    git reset --hard 第二次提交的commitid

    ========》具体这篇文章解释的比较清楚

    git revert 

    git revert 第三次提交的commitid
    
    git push

    revert的结果是:只是把那一次的修改的东西删除了,这里只是把第三次提交增加的3.txt删除了,并且会增加一条提交记录。

  • 相关阅读:
    企业应用架构模式web表现层
    企业应用架构模式组织领域逻辑
    企业应用架构模式并发
    数据访问层
    企业应用架构模式映射到关系数据库
    企业应用架构模式引言
    领域驱动设计(精简版)
    企业应用架构模式分层
    服务层
    企业应用架构模式前言
  • 原文地址:https://www.cnblogs.com/beileixinqing/p/10837498.html
Copyright © 2011-2022 走看看