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删除了,并且会增加一条提交记录。

  • 相关阅读:
    任天堂确认账户被黑客入侵:开启双重验证是关键,会更加安全
    受疫情影响!美国大量科技初创企业要挨饿或倒闭
    泰国的IPv6功能已从约2%增至30%,部署率位于全球5名
    vue钩子函数
    vue自定义全局指令directive和局部指令directives
    vue自定义按键修饰符
    字符串padStart、padEnd填充
    vue过滤器
    vue指令v-if和v-show
    vue指令v-for和key属性
  • 原文地址:https://www.cnblogs.com/beileixinqing/p/10837498.html
Copyright © 2011-2022 走看看