news 2026/5/8 3:13:31

Git Restore命令介绍(撤销工作区修改、恢复多个文件、取消暂存:--staged、同时恢复暂存区和工作区:--worktree、-SW、从指定commit恢复文件--source)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Git Restore命令介绍(撤销工作区修改、恢复多个文件、取消暂存:--staged、同时恢复暂存区和工作区:--worktree、-SW、从指定commit恢复文件--source)

文章目录

  • Git Restore 命令详解:安全恢复文件内容的新方式
  • 一、git restore 是什么?
  • 二、Git 中三个重要区域
  • 三、git restore 最常见用途
  • 1. 撤销工作区修改
  • 四、恢复多个文件
  • 五、取消暂存(Unstage)
  • 六、同时恢复工作区 + 暂存区
  • 七、从指定 commit 恢复文件
  • 八、恢复目录
  • 九、git restore 的核心行为
  • 十、restore 与 checkout 区别
  • 十一、restore 与 reset 区别
    • git restore
    • git reset
  • 十二、常见使用场景
    • 场景1:撤销误修改
    • 场景2:取消 git add
    • 场景3:恢复历史版本文件
    • 场景4:彻底放弃改动
  • 十三、restore 工作流图解
    • 1. 普通 restore
    • 2. restore --staged
    • 3. restore --source
  • 十四、危险点(非常重要)
    • restore 会覆盖文件
  • 十五、最佳实践
    • 推荐使用 restore/switch 替代 checkout
    • restore 前先 diff
    • 小范围恢复优先
  • 十六、常用命令速查表
  • 十七、总结

Git Restore 命令详解:安全恢复文件内容的新方式

在早期 Git 使用中,很多开发者会使用:

gitcheckout -- file.txt

来撤销文件修改。

git checkout同时承担了:

  • 切换分支
  • 恢复文件
  • 分离 HEAD

等多种职责,语义非常混乱。

因此从 Git 2.23 开始,Git 官方引入了两个新命令:

  • git switch:专门用于切换分支
  • git restore:专门用于恢复文件

其中:

gitrestore

就是现代 Git 中用于“撤销文件修改”的推荐命令。


一、git restore 是什么?

git restore用于:

将文件恢复到某个 Git 状态。

它主要用于:

  • 撤销工作区修改
  • 取消暂存(unstage)
  • 从某个 commit 恢复文件
  • 恢复误修改内容

它不会移动 HEAD。

不会切换分支。

只关注:

文件内容恢复

二、Git 中三个重要区域

理解git restore之前,必须先理解 Git 的三个区域:

Working Tree(工作区) ↓ Index / Staging Area(暂存区) ↓ Repository(仓库)

可以理解为:

区域说明
工作区你正在编辑的文件
暂存区即将 commit 的内容
仓库已提交历史

而:

gitrestore

本质上是在:

不同区域之间恢复文件

三、git restore 最常见用途


1. 撤销工作区修改

假设:

vimapp.py

修改了文件。

查看状态:

gitstatus

输出:

modified: app.py

现在想:

放弃修改

执行:

gitrestore app.py

效果:

工作区恢复到暂存区状态

即:

撤销未提交修改

四、恢复多个文件

gitrestore file1.txt file2.txt

或者:

gitrestore.

恢复当前目录所有修改:

危险操作!

因为会直接丢弃所有未提交修改。


五、取消暂存(Unstage)

很多人会混淆:

gitadd

之后如何撤销。

例如:

gitaddapp.py

此时文件进入暂存区。

如果想:

取消 git add

执行:

gitrestore--stagedapp.py

效果:

从暂存区移除 但保留工作区修改

这相当于:

gitreset HEAD app.py

但语义更清晰。


六、同时恢复工作区 + 暂存区

有时候你既:

  • 已 git add
  • 又修改了工作区

想彻底恢复:

全部回到 commit 状态

可以:

gitrestore--staged--worktreeapp.py

或者:

gitrestore-SWapp.py

效果:

工作区恢复 暂存区恢复

即:

彻底撤销文件修改

七、从指定 commit 恢复文件

你还可以从历史版本恢复文件。

例如:

gitrestore--source=HEAD~1 app.py

表示:

从上一个 commit 恢复 app.py

恢复后:

只修改工作区 不会自动 commit

这是非常安全的设计。


八、恢复目录

恢复整个目录:

gitrestore src/

恢复指定类型文件:

gitrestore'*.py'

注意:

*.py

最好加引号,避免 shell 提前展开。


九、git restore 的核心行为

默认情况下:

gitrestore file.txt

等价于:

从暂存区恢复到工作区

即:

Index -> Working Tree

而:

gitrestore--staged

则是:

Repository -> Index

十、restore 与 checkout 区别

旧方式:

gitcheckout -- app.py

新方式:

gitrestore app.py

推荐新方式原因:

命令职责
git switch切换分支
git restore恢复文件
git checkout历史兼容综合命令

现代 Git 更强调:

一个命令只做一件事

十一、restore 与 reset 区别

很多人容易混淆:

  • restore
  • reset

区别非常关键。


git restore

关注:

文件内容恢复

不移动分支。

不修改 commit 历史。


git reset

关注:

移动 HEAD

会影响:

  • 分支指针
  • commit 历史
  • 暂存区

危险性更高。


十二、常见使用场景


场景1:撤销误修改

gitrestore config.yaml

场景2:取消 git add

gitrestore--staged.

场景3:恢复历史版本文件

gitrestore--source=v1.0 README.md

场景4:彻底放弃改动

gitrestore--staged--worktree.

十三、restore 工作流图解


1. 普通 restore

Index ↓ Working Tree

命令:

gitrestore file.txt

2. restore --staged

Repository ↓ Index

命令:

gitrestore--stagedfile.txt

3. restore --source

指定 Commit ↓ Working Tree

命令:

gitrestore--source=HEAD~2 file.txt

十四、危险点(非常重要)


restore 会覆盖文件

例如:

gitrestore.

会直接丢弃:

所有未提交修改

无法恢复。

因此建议:

先查看:

gitdiff

确认后再 restore。


十五、最佳实践


推荐使用 restore/switch 替代 checkout

现代 Git 推荐:

gitswitchgitrestore

代替:

gitcheckout

restore 前先 diff

gitdiff

避免误删修改。


小范围恢复优先

优先:

gitrestore specific-file

而不是:

gitrestore.

十六、常用命令速查表

功能命令
撤销工作区修改git restore file.txt
恢复所有文件git restore .
取消暂存git restore --staged file.txt
同时恢复工作区和暂存区git restore --staged --worktree file.txt
从历史 commit 恢复git restore --source=HEAD~1 file.txt
恢复目录git restore src/

十七、总结

git restore是现代 Git 中:

最安全、最清晰的文件恢复命令

它解决了:

git checkout 职责混乱

的问题。

你可以这样记忆:

命令作用
switch切分支
restore恢复文件
reset移动历史
revert反向提交

其中:

restore = 文件恢复专家

是日常开发中最常用的 Git 命令之一。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/8 3:13:30

Git Merge命令介绍(把指定分支的提交历史合并到当前分支)经典合并、Fast-Forward快进合并FF Merge、三方合并、merge commit、squash merge、合并冲突

文章目录 Git Merge 完全指南:理解 Git 分支合并机制一、什么是 git merge?merge 是“合并到当前分支” 二、merge 的核心思想三、最经典的 merge 流程四、Fast-Forward Merge(快进合并)场景 五、什么是 Three-Way Merge&#xff…

作者头像 李华
网站建设 2026/5/8 3:10:45

java学习笔记(1)

UML类图一、UML类图核心关系详解 UML类图是面向对象设计的“语言”,通过不同的箭头符号,清晰表达类与类之间的交互逻辑,是理解设计原则的基础。 关联关系 类与类之间存在长期的、结构性的联系,比如“用户和订单”,一个…

作者头像 李华
网站建设 2026/5/8 3:09:16

Bonsai Memory:为AI智能体构建分层记忆索引,实现Token消耗降低81%

1. 项目概述:为AI智能体“修剪”记忆,实现极致Token优化如果你正在使用基于大型语言模型(LLM)的AI智能体,比如OpenClaw或其他任何需要持久化记忆的框架,那么你一定对“上下文窗口”和“Token消耗”这两个词…

作者头像 李华
网站建设 2026/5/8 3:08:29

量子计算中的稀疏振幅编码与AIQT技术解析

1. 量子计算中的状态准备挑战在量子计算领域,将经典数据高效编码为量子态是一个基础但极具挑战性的任务。传统方法如Grover算法和量子随机存取存储器(QRAM)虽然理论上可行,但在实际应用中面临两大核心问题:量子资源消耗与信息保留效率。量子态…

作者头像 李华