git工作区、暂缓区、历史记录区三个区域的关系

硅谷探秘者 Md git 1190 0 0

一、git可以简单分为三个区域

  • 工作区(working directory)
  • 暂缓区(stage index)
  • 历史记录区(history)

二、三个区域关系

  工作区是我们能看到的区域,我们在工作区修改增加代码;完成编辑后,我们用 git add 将工作区文件添加到暂存区;然后利用 git commit 提交文件到我们自己的分支。

操作命令:

  • git checkout files或者git checkout .:把文件从暂存区域复制到工作目录,用来丢弃工作区修改,不改变暂存区。

  • git add files 或者 git add .:工作区添加文件到暂存区, .代表全部文件。

  • git reset files 或者 git reset :清空暂存区文件,不改变工作区。

  • git rm --cached files :从暂存区删除文件,工作区则不做出改变。

三、关于git reset

命令格式:git reset [--soft | --mixed | --hard] [<commit>]

  • 使用参数—hard,如git reset --hard <commitID>

    • 替换引用的指向。引用指向新的提交ID。
    • 替换暂存区。替换后,暂存区的内容和引用指向的目录树一致。
    • 替换工作区。替换后,工作区的内容变得和暂存区一致,也和HEAD所指向的目录树内容相同。
  • 使用参数—soft,如 git reset --soft <commitID>:即只更改引用的指向,不改变暂存区和工作区。

  • 使用参数—mixed或者不使用参数(默认为—mixed),如 git reset <commit>:更改引用的指向及重置暂存区,但是不改变工作区。

  • git reset 或者 git reset HEAD:仅用HEAD指向的目录树重置暂存区,工作区不会受到影响,相当于将之前用git add 命令更新到暂存区的内容撤出暂存区。引用也未改变,因为引用重置到HEAD相当于没有重置。

  • git reset filename 或者 git reset HEAD filename:仅将文件filename的改动撤出暂存区,暂存区中其他文件不改变。相当于命令git add filename 的反向操作。

  • git reset --soft HEAD^:工作区和暂存区不改变,但是引用向前回退一次。当对最新的提交说明或者提交的更改不满意时,撤销最新的提交以便重新提交。

  • git reset HEAD^或者git reset --mixed HEAD^:工作区不改变,但是暂存区会回退到上一次提交之前,引用也会回退一次。

  • git reset --hard HEAD^:彻底撤销最近的提交。引用回退到前一次,而且工作区和暂存区都会回退到上一次提交的状态。自上一次以来的提交全部丢失。


评论区
请写下您的评论...
暂无评论...
猜你喜欢
official 666 总结: gitresetHEAD是将咱和HEAD提交保持一致 gitreset—hardHEAD是将存取和HEAD保持一致 [root@mq1~]#mkdira [root
linux 1061 /sda11014M141M874M14%/boottmpfs100M0100M0%/run/user/0、添加磁盘,演示分和挂载添加一硬盘sdb,演示分和挂载在虚拟机设置中点击添加,选择硬盘重启,查看添加
java基础 3751 执行是一Java方法,这计数器是正在执行虚拟机字节码指令地址;如果正在执行是本地(Native)方法,这计数器值则应为空(Undefined)。此内存是唯一一在《Java虚拟
javascript,前端 1143 jsjavascriptforin和forof别,forof遍原理 一、别 forin是ES5语法,forof是ES6语法forin是无序遍数组或对象,也就是随机遍,不按照顺序来
工具 1386 原文链接:https://blog.csdn.net/web_csdn_share/article/details/79243308几专用名词译名如下 Workspace: Index
git 687 合并多commit –mixed(或缺省) 保留清空,把版本之间差异存放在 1、有错误commit需要修改;2、gitresetHEAD清空 —hard[r
official 878 《深入理解java虚拟机》[TOC]一、运行时数据  Java虚拟机在执行Java程序过程中会把它所管理内存划分为若干不同数据。这些有各自用途,以及创建和销毁时间,有
linux系统 6088 Linux分挂载点介绍分类型介绍备注/boot启动分一般设置100M-200M,boot目包含了操内核和在启动统过程中所要用到文件。/根分所有未指定挂载点都会放到这挂载
归档
2018-11  12 2018-12  33 2019-01  28 2019-02  28 2019-03  32 2019-04  27 2019-05  33 2019-06  6 2019-07  12 2019-08  12 2019-09  21 2019-10  8 2019-11  15 2019-12  25 2020-01  9 2020-02  5 2020-03  16 2020-04  4 2020-06  1 2020-07  7 2020-08  13 2020-09  9 2020-10  5 2020-12  3 2021-01  1 2021-02  5 2021-03  7 2021-04  4 2021-05  4 2021-06  1 2021-07  7 2021-08  2 2021-09  8 2021-10  9 2021-11  16 2021-12  14 2022-01  7 2022-05  1 2022-08  3 2022-09  2 2022-10  2 2022-12  5 2023-01  3 2023-02  1 2023-03  4 2023-04  2 2023-06  3 2023-07  4 2023-08  1 2023-10  1 2024-02  1 2024-03  1 2024-04  1 2024-08  1
标签
算法基础 linux 前端 c++ 数据结构 框架 数据库 计算机基础 储备知识 java基础 ASM 其他 深入理解java虚拟机 nginx git 消息中间件 搜索 maven redis docker dubbo vue 导入导出 软件使用 idea插件 协议 无聊的知识 jenkins springboot mqtt协议 keepalived minio mysql ensp 网络基础 xxl-job rabbitmq haproxy srs 音视频 webrtc javascript 加密算法
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。