git restore

文章目录

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 .

参考文献

Git - git-restore Documentation

相关推荐
李少兄11 小时前
在 IntelliJ IDEA 中修改 Git 远程仓库地址
java·git·intellij-idea
先跑起来再说17 小时前
Git 入门到实战:一篇搞懂安装、命令、远程仓库与 IDEA 集成
ide·git·后端·elasticsearch·golang·intellij-idea
承渊政道20 小时前
Linux系统学习【Linux系统的进度条实现、版本控制器git和调试器gdb介绍】
linux·开发语言·笔记·git·学习·gitee
Doro再努力21 小时前
【Linux操作系统12】Git版本控制与GDB调试:从入门到实践
linux·运维·服务器·git·vim
摇滚侠1 天前
MAC IDEA GIT 提交区显示了几个不存在的目录
git·idea
城东1 天前
Git使用[远程仓库远端的head比本地和提交的head旧,其他人拉不到最新代码]
git·head·远程仓库远端·比本地和提交的head旧·其他人拉不到最新代码
何中应1 天前
使用SSH地址拉取远程仓库代码报下面的错误
git
何中应1 天前
Git本地仓库命令补充
git
sun0077001 天前
执行repo sync -c -d -j4以后,提交未git push的代码看不到了。要怎么恢复?
git
胖虎12 天前
Git 一个本地仓库同时推送到两个远程仓库(详细教程)
git·多远程仓库·双远程仓库·git双远程·git备份