Git版本恢复命

reset命令有3种方式:

  1. git reset –mixed:此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息
  1. git reset –soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可
  1. git reset –hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容

以下是一些reset的示例:

折叠复制代码
    1. #回退所有内容到上一个版本
    1. git reset HEAD^
    1. #回退a.py这个文件的版本到上一个版本
    1. git reset HEAD^ a.py
    1. #向前回退到第3个版本
    1. git reset –soft HEAD~3
    1. #将本地的状态回退到和远程的一样
    1. git reset –hard origin/master
    1. #回退到某个版本
    1. git reset 057d
    1. #回退到上一次提交的状态,按照某一次的commit完全反向的进行一次commit
    1. git revert HEAD

如果我们某次修改了某些内容,并且已经commit到本地仓库,而且已经push到远程仓库了

这种情况下,我们想把本地和远程仓库都回退到某个版本,该怎么做呢?

前面讲到的git reset只是在本地仓库中回退版本,而远程仓库的版本不会变化

这样,即时本地reset了,但如果再git pull,那么,远程仓库的内容又会和本地之前版本的内容进行merge

这并不是我们想要的东西,这时可以有2种办法来解决这个问题:

  1. 直接在远程server的仓库目录下,执行git reset –soft 10efa来回退。注意:在远程不能使用mixed或hard参数
  1. 在本地直接把远程的master分支给删除,然后再把reset后的分支内容给push上去,如下:
折叠复制代码
    1. #新建old_master分支做备份
    1. git branch old_master
    1. #push到远程
    1. git push origin old_master:old_master
    1. #本地仓库回退到某个版本
    1. git reset –hard bae168
    1. #删除远程的master分支
    1. git push origin :master
    1. #重新创建master分支
    1. git push origin master

在删除远程master分支时,可能会有问题,见下:

折叠复制代码
    1. $ git push origin :master
    1. error: By default, deleting the current branch is denied, because the next
    1. error: 'git clone' won't result in any file checked out, causing confusion.
    1. error:
    1. error: You can set 'receive.denyDeleteCurrent' configuration variable to
    1. error: 'warn' or 'ignore' in the remote repository to allow deleting the
    1. error: current branch, with or without a warning message.
    1. error:
    1. error: To squelch this message, you can set it to 'refuse'.
    1. error: refusing to delete the current branch: refs/heads/master
    1. To git@xx.sohu.com:gitosis_test
    1. ! [remote rejected] master (deletion of the current branch prohibited)
    1. error: failed to push some refs to 'git@xx.sohu.com:gitosis_test'

这时需要在远程仓库目录下,设置git的receive.denyDeleteCurrent参数

折叠复制代码
    1. git receive.denyDeleteCurrent warn

然后,就可以删除远程的master分支了

虽然说有以上2种方法可以回退远程分支的版本,但这2种方式,都挺危险的,需要谨慎操作……

git学习之git reset命令的更多相关文章

  1. git学习——<五>git分支

    git学习——<一>git安装 git学习——<二>git配置文件 git学习——<三>git操作 git学习——<四>git版本管理 一.提出问题 今 ...

  2. git学习笔记:常用命令总结

    本文根据廖雪峰的博客,记录下自己的学习笔记.主要记录常用的命令,包括仓库初始化.添加文件.提交修改.新建分支.内容暂存.分支管理.标签管理等内容. git是分布式版本控制系统. 首先是安装,从官网下载 ...

  3. Git学习笔记--Git常用命令

    参考资料: http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 mkdir myfir ...

  4. Git学习之常用的命令

    配置git git config --global user.name "你的github用户名" git config --global user.email "你的G ...

  5. Git学习记录--git仓库

    Git是一款强大的版本控制工具,与svn相比git的分布式提交,本地仓库等在使用时确实比较方便.当然两者之间各有优劣,我在这里不多做比较.由于之前少有接触git,只是零星大致地了解一点,所以找时间系统 ...

  6. git 学习(1) ----- git 本地仓库操作

    最近在项目中使用git了,在实战中才知道,以前学习的git 知识只是皮毛,需要重新系统的学一下,读了一本叫  Learn Git in a Month of Lunches 的书籍,这本书通俗易懂,使 ...

  7. Git 学习之git 分支(三)

    Git 分支 几乎每一种版本控制系统都以某种形式支持分支.使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作.在很多版本控制系统中,这是个昂贵的过程,常常需要创建一个源代码目录的 ...

  8. Git 学习之Git 基础(二)

    Git 基础 读完本章你就能上手使用 Git 了.本章将介绍几个最基本的,也是最常用的 Git 命令,以后绝大多数时间里用到的也就是这几个命令.读完本章,你就能初始化一个新的代码仓库,做一些适当配置: ...

  9. git 学习记录—— git 中的仓库、文件状态、修改和提交操作等

    最近开始学习使用版本控制工具  git .学习方式主要通过阅读 git 网站上的 Pro git 和动手实践,使用的系统为 Ubuntu16.04LTS,以及 Windows 8.1. 本文主要关注 ...

  10. git 学习(4) ----- git rebase

    使用git rebase 的前提是多人协作下的分支开发,如果是单人开发,那就没有必要使用它了,这是由git rebase 的作用所决定的,git rebase 有两大作用:一个是与主分支保持同步,一个 ...

随机推荐

  1. 技术分享 | 徐轶韬:从MySQL5.7升级到MySQL 8.0

    在6月20日举办的[墨天轮数据库沙龙-MySQL 5.7 停服影响与应对方案]中,甲骨文MySQL解决方案首席工程师徐轶韬分享了<从MySQL5.7升级到MySQL 8.0>主题演讲,本文 ...

  2. Oracle ASM磁盘组配置、日常运维、故障处理等操作资料汇总

    ASM(自动存储管理)在数据库中是非常重要的组成部分,它可以为磁盘提供统一的存储管理.提高磁盘访问的性能和可用性.简化管理复杂度,从而为数据库的运行提供更好的支持. 这里就为大家整理了墨天轮数据社区上 ...

  3. 简述 JavaScript脚本的执行原理?

    js 是一种动态 . 弱类型 . 基于原型的语言 ,通过浏览器可以直接执行: 当浏览器遇到 <script></script>标记时 , 会执行标记之间的js 代码:然后js ...

  4. wpf之样式

    在Window.Resources中书写样式 : <Window.Resources> <Style TargetType="Button" > </ ...

  5. innerText 和 inner HTML 的区别

    获取内容时: innerText会自动删除空格和换行:innerHTML会保留空格和换行: <body> <div>获 取内 容</div> <script& ...

  6. 使用Swagger的好处

    是一个规范和完整的框架 用于生成.描述.调用和可视化RESTful风格的Web服务 接口的文档在线自动生成 功能测试

  7. WPF中为Popup和ToolTip使用WindowMaterial特效 win10/win11

    先看效果图: 大致思路是:通过反射获取Popup内部的原生窗口句柄,然后通过前文已经实现的WindowMaterial类来应用窗口特效:对于ToolTip,为了保持其易用性,我使用了附加属性+全局样式 ...

  8. 云原生周刊:2024 年 K8s 基准报告 | 2024.4.8

    开源项目推荐 Argo CD Image Updater Argo CD Image Updater 是一个自动更新 Argo CD 管理的 Kubernetes 工作负载容器镜像的工具.简而言之,它 ...

  9. 云原生周刊:Istio 加入 Phippy 家族 | 2024.3.18

    开源项目推荐 ko "ko" 是一个用于构建和部署 Go 应用程序的简单.快速的容器镜像构建工具.它适用于那些镜像中只包含单个 Go 应用程序且没有或很少依赖于操作系统基础镜像的情 ...

  10. 24个希腊字母与 Tex 表示

    大写 小写 英文 中文 Α α Alpha 阿尔法 Β β Beta 贝塔 Γ γ Gamma 伽马 Δ δ Delta 德尔塔 Ε ε Epsilon 艾普西隆 Ζ ζ Zeta 泽塔 Η η Et ...