首页 > 其他分享 >关于git的reset指令说明-soft、mixed、hard

关于git的reset指令说明-soft、mixed、hard

时间:2022-12-22 17:55:09浏览次数:38  
标签:reset HEAD git 重置 hard add 副本 commit

 在开发过程中,git的版本管理越来越普及。在版本管理中,最常用和最重要的是重置提交的版本,恢复后悔做了的事。大家都知道用reset命令。但是有几种形态需要整理共享一下,也方便我自己查阅。

一、首先解析以下这三个相关的状态和概念,

1、HEAD:可以描述为当前分支最后一个提交。即本地的信息中的当前版本。

2、Index:在工作副本修改之后执行过git add操作的版本文件,可以commit了的。

3、Working Copy:工作副本是你正在修改,但是没有执行任何git操作的文件。

 

总的来说,

代码修改,还没做任何操作的时候就是 Working Copy,

git add * 操作之后就是Index,

git commit 之后就是HEAD。如果代码修改了之后进行git add 操作,然后git commit,那么所有三者(HEAD,INDEX(STAGING),WORKING COPY)都是相同的状态,内容相同。

 

二、reset

  1. soft(更改HEAD)(恢复git commit的操作)

软重置。本来origin的HEAD和本地的HEAD一样,如果你指定--soft参数,Git只是单纯的把本地HEAD更改到你指定的版本那么,整个过程中,就HEAD的定义发生了变化,其他像Working Copy 和Index都没有变化。该参数用于git commit后,又要恢复还没commit的场景,重新审查代码,然后再推上去。

 

  2.hard(更改三者)

--hard参数将会将会重置(HEAD,INDEX(STAGING),WORKING COPY),强制一致。该参数用于在把工作副本改成一塌糊涂的时候,包括工作副本,一股脑恢复。有些就单纯修改文件,其中有些git add了,有些git commit了,通通不管,可以一个命令恢复。

 

  3.mixed(default)(恢复git add的操作,包含恢复git commit的操作)

--mixed是reset的默认参数,也就是当你不指定任何参数时的参数。它将重置HEAD到另外一个commit,并且重置index以便和HEAD相匹配。

 

三、记忆方法

工作流中先是本地修改,然后git add,然后gitcommit。以本地修改为最高量级,以自己为中心。该参数用于你在本地改了文件一部分commit了,一部分刚好git add了,这时候你要恢复到你的工作副本状态,要求再次审查代码。

 

1、soft: 重置git commit

2、mixed: 重置git commit 和 git add

3、hard: 重置git commit 和 git add 和工作副本的修改。

标签:reset,HEAD,git,重置,hard,add,副本,commit
From: https://www.cnblogs.com/tiancai/p/16999296.html

相关文章

  • Git-回退到指定版本 reset/revert
    2019/7/27修改更新一、问题描述在利用github实现多人合作程序开发的过程中,我们有时会出现错误提交的情况,此时我们希望能撤销提交操作,让程序回到提交前的样子,本文总......
  • jenkins+git+.net core实现自动发布
    一、前言    继上篇介绍jenkins过去2年多了,最近整理了一下,希望这篇能介绍到一些更实用的方法和知识。本次使用的jenkins版本是2.375.1、jdk17、WinRAR、git;......
  • Bash Shell自定义助手函数git-submodule-foreach:遍历对每个子模块仓库执行自定义的函
    BashShell自定义助手函数git-submodule-foreach:遍历对每个子模块仓库执行自定义的函数或命令序列...概述:在一个大型项目下,我们通常通过GitSubmodule(子模块)机制引入了其......
  • Git的常用命令
    Git基础操作:本地分支与远程master保持同步:​1.先将本地的master拉到最新`gitcheckoutmaster`​gitpull使dev分支保持同步gitcheckoutdevgit......
  • 集成GIT仓库
    集成GIT仓库jgit-java实现git操作一个Java程序中使用Git,有一个功能齐全的Git库,那就是JGit。JGit是一个用Java写成的功能相对健全的Git的实现,它在Java......
  • 用python写一个获取git log也就是changeLog的小工具
    一、前提:每次发版后,都是人工去整理gitlog进行发版说明,结合项目需要,决定写个小工具获取gitlog,主要实现的功能点有以下几点:1、获取gitcommit时的记录。2、在commit中......
  • Git使用教程
    目录​​Git和SVN的区别​​​​Git的安装​​​​Git结构​​​​Git和代码托管中心​​​​本地库和远程库的交互​​​​Git的命令行操作​​​​本地库初始化​​​​Gi......
  • ORihard KCU116E: 经济实惠的 100Gbps 网络和存储 FPGA 开发平台
    ORihardKCU116E:经济实惠的100Gbps网络和存储FPGA开发平台 ORihardKCU116E:经济实惠的100Gbps网络和存储FPGA开发平台 Kintex®UltraScale+™系列被......
  • github pages官方资料限制空间最大1G
    githubpages官方资料限制空间最大1G 但是目前我的空间已经突破5G也没看到有任何限制的趋势。】目前编译一次就是比较慢,大概需要50分钟了。    ......
  • Git & Github & Gitee
    Git学习一、认识Git1、什么是Gitgit是一个分布式版本控制软件,最初由林纳斯·托瓦兹(LinusTorvalds)创作,于2005年以GPL发布。最初目的是为更好地管理Linux内核开发而设计。2......