Git Reset 命令详解与实用示例

文章目录

  • [Git Reset 命令详解与实用示例](#Git Reset 命令详解与实用示例)
    • [`git reset` 主要选项](#git reset 主要选项)
    • [`git reset` 示例](#git reset 示例)
      • [1. 撤销最近一次提交(但保留更改)](#1. 撤销最近一次提交(但保留更改))
      • [2. 撤销最近一次提交,并清除暂存区](#2. 撤销最近一次提交,并清除暂存区)
      • [3. 彻底撤销提交,并丢弃所有更改](#3. 彻底撤销提交,并丢弃所有更改)
      • [4. 回退到特定的提交](#4. 回退到特定的提交)
      • [5. 取消暂存的文件](#5. 取消暂存的文件)
    • [`git reset` 与 `git revert` 的区别](#git reset 与 git revert 的区别)
    • 总结

Git Reset 命令详解与实用示例

git reset 是一个强大的 Git 命令,主要用于撤销提交(commit)、修改暂存区(staging area)或工作区(working directory)。它可以让你回到某个特定的提交,或者只撤销最近的更改,而不影响历史记录。

git reset 主要选项

  1. --soft:只回退提交(commit),保留暂存区和工作区的更改。
  2. --mixed(默认):回退提交,并且清空暂存区(staging area),但保留工作区的更改。
  3. --hard:回退提交,同时清空暂存区和工作区的所有更改。

git reset 示例

1. 撤销最近一次提交(但保留更改)

bash 复制代码
git reset --soft HEAD~1
  • HEAD~1 表示回退到上一个提交。
  • 仅撤销 commit,但文件的修改仍保留在暂存区(staging area)。
  • 适用于:想修改最后一次提交但不想丢失已暂存的内容。

2. 撤销最近一次提交,并清除暂存区

bash 复制代码
git reset --mixed HEAD~1
  • 仅撤销 commit,同时将暂存区的更改退回到工作区(但不删除更改)。
  • 适用于:提交了代码但不想保留这个提交,而是继续修改。

3. 彻底撤销提交,并丢弃所有更改

bash 复制代码
git reset --hard HEAD~1
  • 该命令会将代码回退到上一个提交,并删除所有未提交的更改(无法恢复)。
  • 适用于:不想保留本地的修改,需要完全回到上一个提交的状态。

4. 回退到特定的提交

bash 复制代码
git reset --hard <commit-hash>
  • <commit-hash> 是目标提交的哈希值(git log 可以查看)。
  • 适用于:回到某个特定版本,并清除之后的所有更改。

5. 取消暂存的文件

bash 复制代码
git reset HEAD <file>
  • 取消对 <file> 的暂存,但保留其更改。
  • 适用于:错误地使用 git add 暂存了文件,需要取消暂存但不丢失更改。

git reset 与 git revert 的区别

  • git reset 会直接修改历史记录,适合本地修改,不适用于已推送的提交。
  • git revert 通过创建新的提交来撤销某个提交,适用于共享仓库。

示例:

bash 复制代码
git revert <commit-hash>
  • 这不会改变提交历史,而是生成一个新的撤销提交,适合多人协作。

总结

命令 作用 影响
git reset --soft HEAD~1 撤销最近一次提交 保留暂存区和工作区的更改
git reset --mixed HEAD~1 撤销最近一次提交,清除暂存区 保留工作区的更改
git reset --hard HEAD~1 撤销最近一次提交,并清除所有更改 丢失所有未提交的更改
git reset HEAD <file> 取消暂存区的文件 保留工作区的更改
git revert <commit-hash> 撤销某次提交,并生成新的提交 不修改提交历史,适合共享仓库

如果你对历史回退有顾虑,建议使用 git revert,而 git reset --hard 要谨慎使用,以免丢失重要代码。

相关推荐
lsc_blog18 小时前
年底还在招的岗位,先确认缺口和到岗要求
git·缓存·ci/cd·职场和发展·github
全栈陈序员1 天前
【Git】从入门到精通(十一)—— git reset 三种模式详解
git·elasticsearch
全栈陈序员1 天前
【Git】从入门到精通(十)—— 撤销与恢复:git checkout与git restore
运维·网络·数据库·git
全栈陈序员1 天前
【Git】从入门到精通(五)—— git add:将文件加入暂存区
大数据·git·elasticsearch
全栈陈序员1 天前
【Git】从入门到精通(七)—— git status:查看仓库状态
大数据·git·elasticsearch
莫晓燚2 天前
Ansible 13 个常用模块---企业实战
git·github
无言听风雨丶2 天前
Kubernetes GitOps 持续交付实战:用 Argo CD 让 Git 成为集群事实源
git·elasticsearch·kubernetes
全栈陈序员2 天前
【Git】从入门到精通(六)—— git commit:提交到版本库
大数据·git·elasticsearch
全栈陈序员3 天前
【Git】从入门到精通(一)—— Git简介:什么是版本控制系统
大数据·git·elasticsearch
大猫会长3 天前
git笔记
git