3-具体学习git--reset回到过去的版本(commit间穿梭),checkout单个文件穿梭

git log --oneline 命令可以在一块儿显示做过的改动。
我在change 2时忘了一条,想在change 1后再添加一个语句或一个操作,然后这个状态再提交仍作为change 2.将这个staged改动作为上一个commit中。
将1.py复制了一份重命名为2.py,然后git add 2.py,我如果直接用git commit -m “备注”就不行,可以用 git commit --amend --no-edit


虽然change 2的注释没变,但是前面的指针地址变了,可以看出来。
从staged状态返回到modified状态:git reset 1.py


--

-----------------------------
另一种情况是我改变代码文档后add 到了staged状态,也commit成unmodified状态了,那我怎样返回到add前改变代码的状态呢?用指针移动啊。
首先看看有几个版本,git log --oneline,发现有三个:

可以用 git reset --hard HEAD来重新回到add之前,这个HEAD就代表了07e8eb5这个指针,回到了初始的commit状态,

然后查看状态:

发现没有任何回应,说明是commit状态(即commit后的unmodified状态)
如果我想回到上一个commit状态,我用 git reset --hard HEAD^ 或git reset --hard HEAD~1 或用git reset --hard 7efe439 ,最后一个是id号码。

如果我现在想回到未来,但是看不到change 2 的id号了,怎么办呢?用 git reflog命令找到所有的id号,然后通过id号回到以前有过的将来。


也可以把指针复制过来,



单个文件回到从前:
git checkout 7efe439 -- 1.py 7efe439是id号,1.py是要操作的文档。


发现1.py内容变了。

但是2.py还是之前的内容。
checkout还可以在branch分支之间切换。
我现在修改1.py:

执行:


这时发现1.py的change 2还存在,并没有被覆盖,我们仍然可以回到那个过去。不过现在仍处在:

-----------------------------------------------------
reset和checkout的区别:
1.reset是整个目录回到从前的commit,创造另外一个未来,checkout是单个文件回到从前的commit,回到以前的未来。
2.reset回到从前某个时间点,这个时间点将来直到现在时间的变化不会显示在log 中,而checkout仍然显示在log中。
3-具体学习git--reset回到过去的版本(commit间穿梭),checkout单个文件穿梭的更多相关文章
- git学习——git命令之创建版本库和版本退回
原文来至 一.创建版本库 版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改.删除,Git都能跟踪,以便任何时刻都可以追 ...
- 学习git这一篇就够了!!!
git命令操作 本地库操作 初始化本地仓库 初始化命令 git init $ work % cd workspace $ workspace % mkdir WebService //创建文件夹 $ ...
- 代码回滚:git reset、git checkout和git revert区别和联系
git reset.git checkout和git revert是你的Git工具箱中最有用的一些命令.它们都用来撤销代码仓库中的某些更改,而前两个命令不仅可以作用于提交,还可以作用于特定文件. 因为 ...
- git怎么创建本地版本仓库
git怎么创建本地版本仓库 安装git我就不用说了吧!下载地址:https://github.com/msysgit/msysgit/releases/download/Git-1.9.4-previ ...
- git: reset
git reset --hard:把commit撤销,意思是不仅此次commit提交的文件从本地版本库的状态重置,而且把此次commit的文件也从本地目录中删除 所以如果你执行之后发现,git sta ...
- 学习Git过程中常用命令的总结
复制远程库git clone git@github.com:Hconly/learngit.git在GitHub上,可以任意Fork开源仓库:自己拥有Fork后的仓库的读写权限:可以推送pull re ...
- git reset的用法
git reset三个选项 --mix,--hard,--soft 数据 针对每个选项都是操作这个文件. [root@centos demo]# git init Initialized empty ...
- git教程: 创建版本库
转载:创建版本库 什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改.删除,Git都能跟踪,以便任何时刻 ...
- Git误操作 git reset强制回滚 恢复commit方法
参考: 找回Git中丢失的Commit Git误操作 git reset强制回滚 恢复commit方法 使用Git时,常有误操作,在Commit之后又执行了git reset --hard HEAD强 ...
随机推荐
- webpack(一) 安装使用
(一)webpack的安装 webpack是基于node.js,因此需要安装node.js. 安装好node.js 后,全局安装webpack,命令如下 npm install webpack -g ...
- python 数据类型 之 字典
python 3.6.5字典的特性和定义定义:{'key_1':vlaue_1,'key_2':value_2}1.键与值用冒号 : 分开2.项与项 用 , 分开 特性1.可以存放多个值,可以不唯一, ...
- C# 一段通用的写log 日志的好程序
public void Write(string text) { FileStream fs = new FileStream(Application.StartupPath+"/log.t ...
- Android开发之对ListView的数据进行排序
这里涉及到对ListView的数据进行排序,以及ListView的数据如何清空处理.排序的方法相同,但是里面的数据集合有些区别:一种是利用pojo类取得数据:另一种是利用map来取得数据. 第一种:利 ...
- 继承 (js原型链)
原型链是实现继承的主要方法.基本思想:利用原型让一个引用类型继承另一个引用类型的属性和方法. 1.构造函数.原型.实例的关系: 每个构造函数都有原型属性(Prototype),指向一个原型对象(函数创 ...
- Android.ApplicationCrash
1. 如何调试分析Android中发生的tombstone http://www.360doc.com/content/12/1017/10/7580194_241974419.shtml tombs ...
- spec文件写作规范
spec文件写作规范 2008-09-28 11:52:17 分类: LINUX 1.The RPM system assumes five RPM directories BUILD:rpmbuil ...
- HISAT2+StringTie+Ballgown安装及使用流程
HISAT2+StringTie+Ballgown安装及使用流程 2015年Nature Methods上面发表了一款快速比对工具hisat,作为接替tophat和bowtie的比对工具,它具有更快的 ...
- BZOJ1912或洛谷3629 [APIO2010]巡逻
一道树的直径 BZOJ原题链接 洛谷原题链接 显然在原图上路线的总长为\(2(n-1)\). 添加第一条边时,显然会形成一个环,而这条环上的所有边全部只需要走一遍.所以为了使添加的边的贡献最大化,我们 ...
- How to execute sudo command in remote host via SSH
Question: I have an interactive shell script, that at one place needs to ssh to another machine (Ubu ...