Git教程——回到从前 (reset)
文章目录
- 1.工作前先查看日志
- 2.修改已 commit 的版本
- 3.reset 回到 add 之前
- 4.reset 回到 commit 之前
1.工作前先查看日志
$ git log --oneline
2.修改已 commit 的版本
有时候我们总会忘了什么, 比如已经提交了 commit 却发现在这个 commit 中忘了附上另一个文件. 接下来我们模拟这种情况. 上节内容中, 我们最后一个 commit 是 change 2, 我们将要添加另外一个文件, 将这个修改也 commit 进 change 2. 所以我们复制 1.py 这个文件, 改名为 2.py. 并把 2.py 变成 staged, 然后使用 --amend 将这次改变合并到之前的 change 2 中.
$ git add 2.py
$ git commit --amend --no-edit # "--no-edit": 不编辑, 直接合并到上一个 commit
$ git log --oneline # "--oneline": 每个 commit 内容显示在一行# 输出
904e1ba change 2 # 合并过的 change 2
c6762a1 change 1
13be9a7 create 1.py
3.reset 回到 add 之前
有时我们添加 add 了修改, 但是又后悔, 并想补充一些内容再 add. 这时, 我们有一种方式可以回到 add 之前. 比如在 1.py 文件中添加这一行:
d = 3
文件从修改(modified)状态到staged状态
$ git add 1.py
$ git status -s # "-s": status 的缩写模式
# 输出
M 1.py # staged
接下来我们想回到modified状态执行以下语句:
$ git reset 1.py
# 输出
Unstaged changes after reset:
M 1.py
-----------------------
$ git status -s
# 输出M 1.py # unstaged
4.reset 回到 commit 之前
每个 commit 都有自己的 id 数字号, HEAD 是一个指针, 指引当前的状态是在哪个 commit. 最近的一次 commit 在最右边, 我们如果要回到过去, 就是让 HEAD 回到过去并 reset 此时的 HEAD 到过去的位置.
# 不管我们之前有没有做了一些 add 工作, 这一步让我们回到 上一次的 commit
$ git reset --hard HEAD
# 输出
HEAD is now at 7338690 change 2
-----------------------
# 看看所有的log
$ git log --oneline
# 输出
7338690 (HEAD -> master) change 2
49f05cc change 1
4e6aee2 create 1.py
# 回到 49f05cc change 1
# 方式1: "HEAD^"
$ git reset --hard HEAD^ # 方式2: "commit id"
$ git reset --hard 49f05cc
-----------------------
# 看看现在的 log
$ git log --oneline
# 输出
49f05cc (HEAD -> master) change 1
4e6aee2 create 1.py
怎么 change 2 消失了!!! 还有办法挽救消失的 change 2 吗? 我们可以查看 $ git reflog 里面最近做的所有 HEAD 的改动, 并选择想要挽救的 commit id:
$ git reflog
# 输出
49f05cc (HEAD -> master) HEAD@{0}: reset: moving to HEAD^
7338690 HEAD@{1}: reset: moving to HEAD
7338690 HEAD@{2}: commit (amend): change 2
c911905 HEAD@{3}: commit: change 2
49f05cc (HEAD -> master) HEAD@{4}: commit: change 1
4e6aee2 HEAD@{5}: commit (initial): create 1.py
重复 reset 步骤就能回到 commit (amend): change 2 (id=904e1ba)这一步了
$ git reset --hard 7338690
#输出
HEAD is now at 7338690 change 2
$ git log --oneline
#输出
7338690 (HEAD -> master) change 2
49f05cc change 1
4e6aee2 create 1.py
我们又再次奇迹般的回到了 change 2.
Git教程——回到从前 (reset)相关推荐
- Git教程——回到从前 (checkout 针对单个文件)
文章目录 1.前言 2.改写文件 checkout 1.前言 之前我们使用 reset 的时候是针对整个版本库, 回到版本库的某个过去. 不过如果我们只想回到某个文件的过去, 又该怎么办呢? 2.改写 ...
- 【Git】Git教程
尊重原创:https://blog.csdn.net/fuqiuai/article/details/79495834 基本操作 1.安装git: sudo apt-get install git 安 ...
- 《廖雪峰 . Git 教程》学习总结
基本上,Git就是以下面的命令顺序学习的.文中笔记是从廖雪峰老师的 Git教程 中总结出来的,方面查阅命令. 1.基础 git config --global user.name "Your ...
- Git教程学习总结(分享给热爱学习的你,团队的协作离不开你呀)
目录 Git 教程 Git 安装配置 Git 工作流程 Git 工作区.暂存区和版本库 Git 创建仓库 Git 基本操作 Git 分支管理 Git 查看提交历史 git log git blame ...
- Git 教程 - Git 基本用法
Git 是当前最流行的版本控制程序之一,文本包含了 Git 的一些基本用法 创建 git 仓库 初始化 git 仓库 mkdir project # 创建项目目录 cd project # 进入 ...
- Git教程-帮助开发人员更好的运用Git | 云效
导读:Git教程-帮助开发人员更好的运用Git,Git 作为分布式版本控制工具,近年来越来越受欢迎,很多公司.开发人员开始使用 Git 来替代 SVN.本片文章重点介绍了关于云效对开发人员使用Git更 ...
- 廖雪峰的GIT教程-读书笔记
文章目录 廖雪峰的GIT教程 什么是GIT 集中式vs分布式版本控制系统 分支管理 创建版本库 GIT的版本回退 工作区和暂存区 工作区(Working Directory) 版本库(Reposito ...
- 廖雪峰Git教程笔记与总结 -- Git简介、常用命令、分支管理
本文主要用于记录阅读Git教程 - 廖雪峰的官方网站后的一些心得笔记,并且对git一些常用命令做一个整理总结. 本文要点分为:1.Git简介:2.Git常用命令:3.Git分支管理. 一.Git简介 ...
- 深入浅出Git教程(转载)
目录 一.版本控制概要 1.1.什么是版本控制 1.2.常用术语 1.3.常见的版本控制器 1.4.版本控制分类 1.4.1.本地版本控制 1.4.2.集中版本控制 1.4.3.分布式版本控制 1.5 ...
最新文章
- 【深度学习】U型的Transfomer网络(Swin-Unet)和Swin-Transformer分类
- Jquery 改变样式
- 机器学习入门--进阶资料和流程建议
- gview java_java - 如何在干净模式下运行eclipse? 如果我们这样做会发生什么?
- logstash redis kafka传输 haproxy日志
- java入栈_java中代码块的执行,也会有入栈的步骤吗?
- 苹果x翻新机序列号开头_Android翻新电话每隔X秒
- AM3352启动分析:
- flash 绘图API:绘制秀曲线图形
- html php连接mysql数据库连接,PHP如何连接MySQL数据库?附两种方法!
- Linux下Mongodb安装和启动配置
- 计算机视觉技术与应用综述
- 只需要10秒,使用PPT给证件照换底色
- linux中的 bin sh,Linux-#!/bin/sh理解
- 安卓获取手机唯一码工具类
- 使用Qt通过Post发送Json格式数据
- 根据一段时间区间,按月份拆分成多个时间段
- 雅佳5000音色中英文对照表 AKAI EWI5000
- 为什么现在开发这么累呢?
- stm32的点亮led的基础知识
热门文章
- Ubuntu 16.04服务器 配置
- windows配置mysql5.6免安装版
- keystroke java_Java KeyStroke.getCharacter方法代码示例
- 图片列表模板 html代码,图片列表模板
- CXF之jaxws:endpoint对spring bean的引用
- PHP32向右位移2位是多少,PHP的二进制位移操作
- python123第四周作业_科学计算和可视化
- spring boot 支持多少人在线_通过 spring-boot-starter-hbase 集成 HBase
- JavaWeb——servlet介绍
- 游戏服务器的架构设计(一点参考,实际价值似乎不大……)