likes
comments
collection
share

浅谈深用:Git restore 功能解析及其实战中的重要角色

作者站长头像
站长
· 阅读数 59

引言

git restore 是 Git 中用于撤销更改的命令,它在 Git 2.23 版本中引入,用于替代旧的命令 git checkout 的部分功能。git restore 允许你恢复工作目录中的文件到某个特定状态,可以是撤销修改、还原删除文件,或者将文件重置为之前的某个提交状态。

功能介绍

1. 恢复工作目录中的文件: 恢复工作目录中指定文件的内容,将其还原为最近的提交状态(与 git checkout -- <file> 类似)。

git restore <file>

2. 撤销工作目录中的修改: 将指定文件恢复为指定提交 <commit> 中的版本,这将撤销对该文件的所有更改。

git restore --source=<commit> <file>

3. 恢复删除的文件:从指定提交 <commit> 中恢复指定文件的版本,并将其添加到暂存区(staging area),以便再次提交。

git restore --source=<commit> --staged <file>

4. 将文件重置为特定提交状态:将指定文件恢复为指定提交 <commit> 中的版本,但不更改暂存区(staging area)或提交历史记录。

git restore --source=<commit> --worktree <file>
  • 5. 恢复整个工作目录:将整个工作目录恢复为指定提交 <commit> 中的状态,包括所有被修改的文件和已删除的文件。
git restore --source=<commit> --staged --worktree .

应用场景

  • 撤销错误的修改: 当你意外地修改了文件,想要撤销修改并恢复到之前的状态时,可以使用 git restore <file> 命令。

  • 恢复被删除的文件: 如果你不小心删除了文件,但又希望恢复它,可以使用 git restore --source=<commit> --staged <file> 命令从历史提交中恢复该文件。

  • 回滚到历史版本: 当你想要将文件回滚到之前的某个提交状态时,可以使用 git restore --source=<commit> <file> 命令。

  • 恢复整个工作目录状态: 在某些情况下,你可能需要将整个工作目录恢复到某个特定提交的状态,包括撤销所有的修改和删除。这时候可以使用 git restore --source=<commit> --staged --worktree . 命令。

  • 分支切换时保留工作目录: 在切换分支时,如果不想让目标分支上的文件覆盖当前工作目录的更改,可以使用 git switch 或 git checkout 命令配合 --no-guess 参数,并结合 git restore 来手动管理文件状态。这样可以避免意外丢失工作进度。

与 git checkout 和 git reset 的区别

尽管 git restore 可以实现部分与 git checkoutgit reset 类似的效果,但它设计得更为专注和明确。git checkout 由于功能过于多样,有时可能会引起混淆,尤其是在处理工作目录文件时。而 git reset 更侧重于改变历史记录,通常涉及 HEAD 指针和索引区域的移动。相比之下,git restore 专注于当前工作流,更安全地应用于日常开发场景,尤其是对于那些只想简单撤销更改而不影响历史提交的开发者来说。

写在最后

总结而言,git restoreGit 工具箱中一个非常实用的补充,它增强了对工作目录和暂存区状态管理的精细控制,从而帮助开发者更加高效、精确地处理代码版本问题。在日常使用 Git 进行版本控制时,熟悉并掌握 git restore 命令无疑会提升工作效率与安全性。

喜欢的话帮忙点个赞 + 关注吧,将持续更新 JavaScript 相关的文章,还可以关注我的公众号 梁三石FE ,感谢您的关注~

转载自:https://juejin.cn/post/7344653866199842870
评论
请登录