`
viking2439
  • 浏览: 47863 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

git 版本回滚操作

    博客分类:
  • GIT
 
阅读更多

原文地址:http://www.oschina.net/news/26241/you-can-not-change-git-history




有时候使用Git工作得小心翼翼,特别是涉及到一些高级操作,例如 reset, rebase 和 merge。甚至一些很小的操作,例如删除一个分支,我都担心数据丢失。

不久之前,我在做一些大动作(rebasing)之前,我总是备份整个版本库,以防万一。直到最近我才发现git的历史记录是不可修改的,也就是说你不能更改任何已经发生的事情。你做的任何操作都只是在原来的操作上修改。也就是说,即使你删除了一个分支,修改了一个提交,或者强制重置,你仍然可以回滚这些操作。

让我们来看一些例子:

$ git init
$ touch foo.txt
$ git add foo.txt
$ git commit -m "initial commit"

$ echo 'new data' >> foo.txt
$ git commit -a -m "more stuff added to foo"

你现在看git的历史记录,你可以看到两次提交:
$ git log
* 98abc5a (HEAD, master) more stuff added to foo
* b7057a9 initial commit

现在让我们来重置回第一次提交的状态:
$ git reset --hard b7057a9
$ git log
* b7057a9 (HEAD, master) initial commit

这看起来我们是丢掉了我们第二次的提交,没有办法找回来了。但是 reflog 就是用来解决这个问题的。简单的说,它会记录所有HEAD的历史,也就是说当你做 reset,checkout等操作的时候,这些操作会被记录在reflog中。

$ git reflog
b7057a9 HEAD@{0}: reset: moving to b7057a9
98abc5a HEAD@{1}: commit: more stuff added to foo
b7057a9 HEAD@{2}: commit (initial): initial commit

所以,我们要找回我们第二commit,只需要做如下操作:
$ git reset --hard 98abc5a

再来看一下 git 记录:
$ git log
* 98abc5a (HEAD, master) more stuff added to foo
* b7057a9 initial commit

所以,如果你因为reset等操作丢失一个提交的时候,你总是可以把它找回来。除非你的操作已经被git当做垃圾处理掉了,一般是30天以后
分享到:
评论

相关推荐

    简单谈谈Git中的回滚操作

    大家在日常开发中,经常会遇到需要将代码切回到之前的某个版本的情况,有可能是需要将代码回滚,也有可能需要查看之前的某个实现。...下面通过这篇文章来学习下Git中的回滚操作,有需要的可以参考借鉴。

    git错误回滚工具,对配置文件误删有大作用

    git是一个可以进行配置文件错误得回滚工具,在任何时候都不能避免误删文件得可能,这个就可以解决一些问题。

    如何使用Git优雅的回滚实现

    主要介绍了如何使用Git优雅的回滚实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    git 删除分支和回滚的实例详解

    git 删除分支和回滚的实例详解 【git 删除本地分支】 git branch -D br 【git 删除远程分支】 git push origin :br (origin 后面有空格) git代码库回滚: 指的是将代码库某分支退回到以前的某个commit id 【本地...

    Git代码回滚实践

    Git代码回滚实践环境搭建环境试验idea示例代码回滚回滚条件创建回滚目标具体操作github地址 环境搭建 1.github上新建仓库:https://github.com/ydfind/git-test.git 2.idea从git新建两个项目,并修改提交代码的...

    IDEA通过git回滚到某个提交节点或某个版本的操作方法

    主要介绍了IDEA通过git回滚到某个提交节点或某个版本的方法,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

    Git撤销&回滚操作(git reset 和 get revert)

    主要介绍了Git撤销&回滚操作(git reset 和 get revert),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    Git版本回退方法论(可能解决你101%遇到的Git版本问题)

    初衷 由于本人刚到新公司,也是毕业不久,经验不足,经常导致 git 事故发生,特此总结遇坑解决方法,以示后人。 1 本地版本回退 你在本地做了错误的 ...由于本地分支回滚后,版本将落后远程分支,必须使用强制推送

    IDEA中使用Git(史上最全最详细)(tedu2)(教学操作视频+源代码)

    IDEA中使用Git(史上最全最详细)(tedu2)(教学操作视频+源代码) 包含:IDEA中使用Git文档、教学操作视频、代码 1.IDEA集成Git 1.1设置全局git用户名和邮箱 1.2 创建一个SpringBoot项目 1.3 IDEA中设置Git 1.4 设置...

    Git使用小技巧之回滚与撤销详解

    主要给大家介绍了关于Git使用小技巧之回滚与撤销的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Git具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

    Git客户端(TortoiseGit)基本使用详解

    git安装、配置、查看日志、分支合并、回滚 git安装、配置、查看日志、分支合并、回滚、

    jakkypan#trivia#git回滚总汇1

    1、仅在工作区修改的文件 2、已添加到暂存区的文件 3、已经commit,但是没有push 3、已经push到远端

    详解IDEA git分支回退指定的历史版本

    主要介绍了详解IDEA git分支回退指定的历史版本,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    利用PyCharm操作Github(仓库新建、更新,代码回滚)

    Github是目前世界上最流行的代码存储和分享平台,而PyCharm是Python圈中最流行的IDE,它很好地支持了Git操作。本文将会介绍如何利用PyCharm来连接Github,同时演示Github上的仓库新建、更新,以及代码回滚。   在...

    Git 工作流程及常用术语(工作区、暂存区、版本库、回滚,分支等)、常用操作

    Git(读音为/gɪt/。)是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。 [1] Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

    Git权威指南PDF完整版

    3.1.3 从Git版本库进行安装/ 23 3.1.4 命令补齐/ 25 3.1.5 中文支持/ 25 3.2 在Mac OS X 下安装和使用 Git/ 26 3.2.1 以二进制发布包的方式安装/ 26 3.2.2 安装 Xcode/ 27 3.2.3 使用 Homebrew 安装 Git/ 29 3.2.4 ...

    git入门:掌握版本控制的关键步骤.pdf

    版本控制系统(VCS):它是一种管理文件变化的系统,允许开发者追踪文件的历史记录,并在必要时回滚到之前的版本。 分布式版本控制系统(DVCS):与传统的集中式版本控制系统相比,DVCS允许多个开发者在本地拥有完整...

    GIT常用命令整理

    GIT常用命令整理,包含一个HTML文档,一个PNG脑图: 配置操作、 全局配置、 局部配置、 基本操作、 分支操作、 合并操作、 标签操作、 回滚操作、 本地文件回滚、 日志操作、 远程操作。

Global site tag (gtag.js) - Google Analytics