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/
注意事项 #
git restore是 Git 2.23+ 的新命令- 替代了旧版本的:
git checkout -- <file>(撤销工作区)git reset HEAD <file>(撤销暂存区)
- 工作区的恢复是不可逆的,修改会永久丢失