文章目录
1.简介
restore 是由 git 2.23 版本引入,是一个比较新的命令,用于恢复暂存区或者工作区中的文件。
恢复工作区中的文件,也可以使用git checkout -- <file>
。可见,restore 实现了 checkout 的文件恢复功能,restore 更加符合恢复语义,建议使用。
2.格式
shell
git restore [<options>] [--source=<tree>] [--staged] [--worktree] [--] <pathspec>...
--
表示后面的参数均不是选项。
3.选项
-W, --worktree
恢复工作区指定文件,为缺省选项。
-S, --staged
将暂存区指定文件回退到工作区。
-s, --source=<tree>
指明要恢复的文件内容所在的 commit,branch 或 tag,缺省为 HEAD。
<pathspec>...
限制受操作影响的路径。可以是文件,也可以是目录。
-p, --patch
交互式选择恢复内容(块级恢复)。
4.示例
- 撤销工作区修改(未 add 的文件)。
shell
# 恢复指定文件
git restore <file>...
# 恢复所有修改(谨慎使用)
git restore .
- 撤销暂存区修改(已 add 的文件)。
将暂存区的文件回退到工作区,保留工作区修改。
shell
# 撤销指定文件
git restore --staged <file>...
# 撤销所有文件
git restore --staged .
- 将工作区和暂存区中的所有文件还原到最新的提交状态。
shell
git restore --staged --worktree .
# 或者
git restore -SW .
5.注意事项
- 不可逆操作
恢复操作会永久丢弃未提交的修改,无法通过 Git 找回(IDE 可能有本地历史记录)。
- 新文件处理
git restore 无法恢复未跟踪的新文件,需手动删除或使用:
shell
git clean -fd # 删除未跟踪文件
- 冲突文件恢复
解决合并冲突时,使用 --ignore-unmerged 避免意外覆盖:
shell
git restore --ignore-unmerged .