Git Restore 命令用法

git restore 基础用法 #

git restore 是 Git 2.23 引入的新命令,用于撤销文件修改。

两种主要用法 #

1. git restore #

撤销工作区的修改,文件恢复到最后一次提交的状态。

git restore Plan.md

效果

  • 删除所有未提交的修改
  • 文件内容回到 HEAD 状态
  • 修改会永久丢失

2. git restore –staged #

撤销暂存区的修改,取消文件的暂存状态。

git restore --staged Plan.md

效果

  • 文件从暂存区移除
  • 修改仍保留在工作区
  • 相当于撤销 git add 操作

快速记忆 #

命令作用区域修改是否保留
git restore file工作区❌ 丢失
git restore --staged file暂存区✅ 保留

常见场景 #

# 场景1: 修改了文件,想完全放弃修改
git restore config.js

# 场景2: 已经 git add,但想取消暂存
git restore --staged config.js

# 场景3: 同时撤销暂存和修改
git restore --staged config.js
git restore config.js

高级用法 #

1. 指定恢复源 –source #

从特定提交或分支恢复文件。

# 从两个提交前恢复
git restore --source=HEAD~2 README.md

# 从其他分支恢复
git restore --source=develop package.json

# 从 stash 恢复
git restore --source=stash@{0} -- file.js

2. 交互式恢复 -p #

逐块选择要恢复的内容,精确控制。

git restore -p file.js

系统会询问每个修改块:

  • y - 恢复这块
  • n - 跳过
  • s - 拆分成更小块
  • q - 退出

3. 批量恢复 #

# 恢复整个目录
git restore src/

# 恢复所有文件(危险)
git restore .

# 恢复被删除的文件
git restore deleted-file.txt

4. 同时处理工作区和暂存区 #

# 同时撤销暂存和工作区修改
git restore --source=HEAD --staged --worktree file.js

# 简写形式
git restore -SW file.js

5. 选项组合 #

选项简写作用
--staged-S恢复暂存区
--worktree-W恢复工作区
--patch-p交互式选择
--source=<tree>指定恢复源

实用场景示例 #

# 场景4: 只想恢复文件的部分修改
git restore -p config.js

# 场景5: 误删文件后恢复
git restore important.txt

# 场景6: 从特定版本恢复配置
git restore --source=v1.0.0 -- package.json

# 场景7: 批量撤销实验性修改
git restore --source=main -- src/experimental/

注意事项 #

  1. git restore 是 Git 2.23+ 的新命令
  2. 替代了旧版本的:
    • git checkout -- <file> (撤销工作区)
    • git reset HEAD <file> (撤销暂存区)
  3. 工作区的恢复是不可逆的,修改会永久丢失