首页 > 其他分享 >git reset 命令及参数样解

git reset 命令及参数样解

时间:2024-05-24 09:18:53浏览次数:17  
标签:reset HEAD git 样解 暂存区 提交 目录

git reset 命令用于回退版本,可以指定退回某一次提交的版本。git reset 有三个主要模式,每种模式对 HEAD、暂存区和工作目录的影响不同。

git reset --soft

  • 作用:将当前分支的 HEAD 重置为指定的 ,但不会更改暂存区和工作目录中的文件。
  • 影响:
    HEAD: 更新到指定的
    • 暂存区: 保持不变。
    • 工作目录: 保持不变。
  • 使用场景:如果你只是想重写最近的提交记录(例如,将多次提交合并为一次提交),但不改变文件的内容。

使用示例

你有几个连续的提交,但希望将它们合并为一个提交,以保持提交历史的简洁。例如,假设你的提交历史如下:

A - B - C - D (HEAD)

你希望将提交 B、C 和 D 合并为一个新的提交。

步骤

查看当前提交历史:

git log --oneline

这会显示简化的提交历史,如:

dddddd D
cccccc C
bbbbbb B
aaaaaa A

重置 HEAD 到 B 提交:

git reset --soft HEAD~3

这会将 HEAD 重置到 B 提交之前的状态,同时保留 B、C 和 D 的修改在暂存区。结果是提交历史变为:

A (HEAD)

而所有更改都在暂存区中。

创建一个新的提交:

git commit -m "Combine B, C, and D into one commit"

这会将暂存区的所有更改作为一个新的提交添加到提交历史中。

验证新的提交历史:

git log --oneline

现在你会看到:

eeeeee Combine B, C, and D into one commit
aaaaaa A

git reset --mixed (默认模式)

  • 作用:将当前分支的 HEAD 重置为指定的 ,同时更新暂存区使其与 HEAD 匹配,但不会更改工作目录中的文件。
  • 使用场景:如果你想撤销最近的提交并取消暂存这些更改,使它们再次变为未暂存状态。
  • 影响:
    • HEAD: 更新到指定的
    • 暂存区: 与 HEAD 同步,所有变更取消暂存。
    • 工作目录: 保持不变。

git reset --hard

  • 作用:将当前分支的 HEAD 重置为指定的 ,同时更新暂存区和工作目录使其与 HEAD 匹配。这会丢失未提交的更改。
  • 使用场景:如果你想完全撤销所有未提交的更改并重置仓库到某个特定的提交状态。
  • 影响:
    • HEAD: 更新到指定的
    • 暂存区: 与 HEAD 同步。
    • 工作目录: 与 HEAD 同步,所有未提交的更改丢失。

总结

上面提到每种模式对 HEAD、暂存区和工作目录的影响不同。

  • soft模式,只变更HEAD,暂存区和工作目录不作处理
  • mixed模式,只变更HEAD和暂存区,工作目录不作处理
  • hard模式,HEAD、暂存区和工作目录都变更

标签:reset,HEAD,git,样解,暂存区,提交,目录
From: https://www.cnblogs.com/shushulelan/p/18209960

相关文章

  • git之fatal: unable to access ‘https://11.2.7.8:68/mjgn/mj.git/‘: SSL certifica
    MENU前言方法一方法二方法三方法四结束语前言出现这个错误是因为Git在访问仓库时遇到了SSL证书问题,具体是证书的密钥太弱,不符合安全要求。方法一升级或更换SSL证书联系服务器管理员,确保服务器上使用的是强密钥SSL证书。推荐使用至少2048位的密钥。方法二......
  • GitHub——源代码管理工具
    一、简介GitHub是一个面向开源及私有软件项目的托管平台,因为只支持Git作为唯一的版本库格式进行托管,故名GitHub。GitHub提供了分布式版本控制和源代码管理(SCM)功能,它是基于Git的,由GitHub公司开发和维护。它不仅提供了代码托管服务,还提供了一个平台,让开发者可以交流、学习和协作。......
  • git-将老项目的分支推送到新项目的新分支上
    1.克隆新项目:首先,将新项目的仓库克隆到本地。使用以下命令将新项目克隆到本地:gitclone<新项目的仓库地址>2.进入新项目目录:进入新项目的目录,使用以下命令:cd<新项目目录>3.添加旧项目的远程仓库:将旧项目的远程仓库添加为新项目的远程仓库。使用以下命令添加远程仓库:gitr......
  • Git入门教程
    Git入门教程目录页1.Git介绍1.1.Git工作原理2.Git环境配置2.1.Git下载与安装2.2.Git使用方式2.3.Git基本配置2.3.1.Git与Github的通信建立2.3.2.忽略不同步文件3.命令行方式——Git命令代码输入3.1.常用Git命令3.2.git本地操作3.3.g......
  • 容器的接口访问错误:Recv failure: Connection reset by peer,Gin
    goversiongo1.22.1windows/amd64Windows11+amd64x86_64x86_64GNU/Linux--- 开发了一个golang程序:基于Ginweb框架的服务,部署到了ECS的容器(docker)上,端口40000也暴露成功了。ben发布于博客园#dockerrun-itd--namego1-m128MB-p40000:40000go1:v......
  • ssh连接失败:kex_exchange_identification: read: Connection reset by peer
    现象docker内部在35001端口上开启ssh服务,通过容器所在主机登录ssh,成功。但通过其他机器登录ssh,失败。 解决方法关闭容器所在主机的防火墙。#查看firewall服务状态systemctlstatusfirewalld#查看firewall的状态firewall-cmd--state#开启servicefirewalldstar......
  • $ git push -u origin "master"
    $gitpush-uorigin"master"Tohttps://gitee.com/ee/0523.git ![rejected]       master->master(non-fast-forward)error:failedtopushsomerefsto'https://gitee.com/ee/0523.git'hint:Updateswererejectedbecauseapushedbra......
  • GitHub SSH 快速配置
    每次更换系统或者电脑时,都需要重新配置一番GithubSSH的验证,记性不太好,写了一个快速部署的辅助脚本,直接安装脚本提示使用即可,经测试,Linux和Windows下均能使用。脚本功能设置Git用户名和邮箱脚本会提示用户输入Git用户名和邮箱,并将其设置为全局配置。生成新的......
  • 主流源代码管理工具GitHub介绍
    GitHub在软件开发领域,源代码管理工具的重要性不言而喻。它们不仅帮助开发者跟踪代码变更,还促进了团队协作,使得项目管理和版本控制变得更加高效。在众多源代码管理工具中,GitHub以其独特的优势,成为了众多开发者和团队的首选。1.引言源代码管理工具是软件开发中不可或缺的一部分......
  • git 的常用命令
      在写好代码,想要将代码提交到github上时,应该首先执行命令gitinit来建立一个本地仓库,然后需要将修改添加到暂存区(gitadd.:添加全部文件;gitadd-p<file>:添加指定文件),之后执行gitcommit-m'message'来将暂存区的修改提交到本地仓库。  在提交到本地仓库后,需要添......