Git 版本回退

本文详细介绍了Git中的HEAD、索引(暂存区)和工作副本的概念及它们之间的关系。通过Git的工作流程,阐述了从文件修改到提交的过程中HEAD、索引和工作副本的变化状态。此外,还讲解了gitreset命令的三种模式:hard、mixed和soft,及其对HEAD、索引和工作副本的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考:https://blog.youkuaiyun.com/candyguy242/article/details/46043207
首先,解释几个定义:
HEAD(头)
指向当前branch最顶端的一个commit,该分支上一次commit后的节点

Index(索引)
也可以被认为是staging area(暂存区), 是一堆将在下一次commit中提交的文件,提交之后它就是 HEAD的父节点. (译注:git add添加的文件)

Working Copy(工作副本)
当前工作目录下的文件,(译注:一般指,有修改,没有git add,没有git commit的文件)

Flow(流程如下):
1.当你第一次checkout一个新的分支,HEAD指向该分支上最近一次commit。它和index和working copy是一样一样的。
2. 当你修改了一个文件,Git注意到了会说“哦,有些东西被改了”,你的working copy不再和index和HEAD相同了,所以当文件有改动,它会标记这些文件。
3. 然后,你执行git add命令,这条命令会将上面修改的文件缓存在index中,Git又说了“哦,你的working copy和index相同了,而他们俩和HEAD不同了”。
4. 当你执行git commit,Git创建了一个新的commit,HEAD这时指向这个新的commit,此时,HEAD & index & working copy又相同了,Git又开心了一次。

操作流程

一、用git reflog命令查看coomit ID
在这里插入图片描述

二、恢复到reset之前的状态

  1. The --hard HEAD & index & working
    copy同时改变到你要reset到的那个commit上。这个参数很危险,执行了它,你的本地修改可能就丢失了。

     git reset --hard <coomit ID>
    
  2. The --mixed 改变HEAD和index,指向那个你要reset到的commit上。而workingcopy文件不被改变。当然会显示工作目录下有修改,但没有缓存到index中。

     git reset --mixed <coomit ID>
    
  3. The -soft参数只告诉Git将其他的commit重置到HEAD,就仅此而已。index和workingcopy中的文件都不改变。

      git reset --soft <coomit ID>
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值