当前位置: 首页 > news >正文

Git Restore 命令详解与实用示例

文章目录

  • Git Restore 命令详解与实用示例
    • 1. 恢复工作区文件到最后一次提交的状态
      • 基本命令
      • 示例
      • 恢复所有更改
    • 2. 恢复某个文件到特定提交的状态
      • 基本命令
      • 示例
    • 3. 恢复暂存区的文件
      • 基本命令
      • 示例
      • 恢复所有暂存的文件
    • `git restore` 的常见选项
    • `git restore` 与 `git checkout` 比较
    • 总结

Git Restore 命令详解与实用示例

git restore 是 Git 2.23 版本引入的新命令,旨在替代 git checkout 用于恢复文件和撤销工作区的更改。它将原本由 git checkout 执行的文件恢复功能进行独立化,使得 Git 的命令更加清晰和易用。

git restore 主要有两种用法:

  1. 恢复工作区文件到上次提交的状态
  2. 恢复特定文件到某个提交的状态

1. 恢复工作区文件到最后一次提交的状态

当你修改了文件,但决定不保留这些更改时,可以使用 git restore 将文件恢复到最近的提交版本。

基本命令

git restore <文件名>

示例

假设你修改了 main.py 文件,但决定撤销这些修改,恢复到最后一次提交的状态:

git restore main.py

这会把 main.py 恢复到当前分支上最新的提交版本。

恢复所有更改

如果想恢复当前工作目录下所有文件的更改,可以使用 . 作为通配符:

git restore .

2. 恢复某个文件到特定提交的状态

你可以选择恢复某个文件到某个特定的提交版本,而不是当前分支的最新提交。

基本命令

git restore --source=<commit_id> <文件名>

示例

假设你想将 index.html 恢复到 abc1234 这个提交时的版本:

git restore --source=abc1234 index.html

这会将 index.html 恢复到提交 abc1234 的状态。

注意git restore --source 中指定的 <commit_id> 也可以是分支名或者标签名。

3. 恢复暂存区的文件

git restore 还可以用来撤销文件的暂存操作,即把文件从暂存区(staging area)移回工作区。

基本命令

git restore --staged <文件名>

示例

如果你已将 main.py 文件添加到暂存区,但决定不提交它,可以使用 git restore --staged 命令将其从暂存区移除,保留在工作区:

git restore --staged main.py

这会将 main.py 从暂存区移除,保留文件的修改,但不会影响工作区的内容。

恢复所有暂存的文件

如果你想将所有已暂存的文件恢复到工作区,可以使用:

git restore --staged .

git restore 的常见选项

选项说明
--source=<commit_id>指定要恢复的提交,默认为当前分支的最新提交
--staged只恢复暂存区的文件,撤销暂存操作
--worktree恢复工作区的文件到指定提交的状态
.恢复当前目录下所有文件

git restoregit checkout 比较

操作git checkoutgit restore
恢复工作区文件git checkout -- 文件名git restore 文件名
恢复暂存区文件git reset 文件名git restore --staged 文件名
切换分支git checkout 分支名使用 git switch

总结

  • git restore 是一个更专注于恢复文件和撤销更改的命令。
  • git restore 恢复文件或撤销暂存比 git checkout 更简洁。
  • 推荐使用 git restore 来恢复文件的状态,并将文件从暂存区移回工作区。
http://www.dtcms.com/a/109245.html

相关文章:

  • leecode第18天
  • 代码拟有感
  • 跟我学C++中级篇——In-Place Construction 和placement new
  • React-router v7 第二章(路由模式)
  • Vant 上传图片闪动问题的原因与解决方案
  • Shell脚本编程之大括号扩展
  • Spring 核心技术解析【纯干货版】- XX:Spring 测试模块 Spring-Test 模块精讲
  • 【文献研究】铝对热冲压加热过程中锌氧化的影响
  • 【C++ SIMD】第3篇:数据对齐与跨步访问(Windows/VS2022版)——以AVX为例
  • Hadoop集群---运维管理和技巧
  • 【Kafka基础】单机安装与配置指南,从零搭建环境
  • NodeJS--NPM介绍使用
  • 训练或微调以生成新组合结构
  • Leetcode 927 -- 思维
  • Win10定时任务计划无法显示要执行的EXE任务程序界面,问题解决办法
  • 什么是检索增强生成(RAG)
  • 7-3 逆序的三位数
  • PyTorch 深度学习实战(33):联邦学习与隐私保护
  • CROSS JOIN第一个表中的每一行与第二个表中的每一行组合
  • 商城系统:电商时代的核心驱动力
  • Cribl 修改字段rename
  • Express学习笔记(四)——同源和跨域详解
  • (九)图形管线
  • Vue3.5 企业级管理系统实战(十三):TagsView标签栏导航
  • PyQt6实例_A股日数据维护工具_权息数据增量更新线程
  • 禹神:三小时快速上手TypeScript,TS速通教程(上篇、中篇、下篇,装饰器),根据视频整理
  • Windows查重工具,强烈推荐大家收藏!
  • 前端接收客户端返回的token值使用pinia持久化保存token
  • 元素定位-xpath
  • verl单机多卡与多机多卡使用经验总结