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

Git Switch 与 Git Restore 详解

git switch 和 git restore 是 Git 2.23 版本引入的两个新命令,旨在替代 git checkout 的部分功能,使操作更清晰、更安全。以下是详细解析:


1. git switch - 分支切换专用

核心功能:专门用于切换分支和创建新分支,替代 git checkout <branch> 的分支操作部分。

常用操作

# 切换到已存在的分支 
git switch main 
# 创建并切换到新分支 
git switch -c new-feature 
# 切换到远程分支(自动跟踪) 
git switch -t origin/feature 
# 切换到特定提交(分离头指针状态) 
git switch --detach a1b2c3d

优点

  • 语义清晰:明确用于分支操作
  • 安全性:避免误覆盖工作区文件(旧版 git checkout 可能覆盖未提交的修改)

2. git restore - 文件恢复专用

核心功能:专门用于恢复工作区或暂存区的文件状态,替代 git checkout -- <file> 和 git reset <file> 的文件操作。

常用操作

# 丢弃工作区修改(未暂存的修改) 
git restore file.txt 
# 取消暂存(将文件从暂存区移回工作区) 
git restore --staged file.txt 
# 同时恢复工作区和暂存区 
git restore --source=HEAD -SW file.txt 
# 恢复到特定版本 
git restore --source=commit-id file.txt

选项说明

  • --staged:操作暂存区
  • --worktree(或 -W):操作工作区
  • --source:指定恢复源(默认是 HEAD)

3. 与旧命令对比
场景新命令旧命令
切换分支git switch maingit checkout main
创建分支git switch -c newgit checkout -b new
丢弃工作区修改git restore file.txtgit checkout -- file.txt
取消暂存git restore --staged file.txtgit reset file.txt

4. 关键区别
  1. 职责分离

    • git switch只处理分支
    • git restore只处理文件恢复
    • 解决 git checkout 的多义性问题(既切换分支又恢复文件)
  2. 安全性提升

    • git switch 在切换分支时会检查工作区状态,避免覆盖未保存的修改
    • git restore 提供更精确的文件控制(工作区/暂存区)
  3. 语义清晰

    • switch 明确表示"切换上下文"
    • restore 明确表示"恢复文件状态"

5. 使用建议
  1. 分支操作

    # 创建并切换分支 
    git switch -c feature-login 
    # 切换回主分支 
    git switch main
  2. 撤销修改

    # 场景1:丢弃未暂存的修改 
    git restore src/components/Button.vue 
    # 场景2:撤销已暂存的文件(取消git add) 
    git restore --staged package.json 
    # 场景3:恢复到上周的版本 git restore --source=HEAD@{7.days.ago} -- README.md

⚠️ 注意:两个命令都需要 Git 2.23+ 版本。旧版用户仍需使用 git checkout


总结

命令最佳场景替代旧命令
git switch分支切换/创建/跟踪git checkout <branch>
git restore文件恢复/撤销暂存/版本回退git checkout -- <file> 和 git reset <file>

这两个命令通过职责分离显著提升了 Git 操作的直观性和安全性,建议优先使用它们替代旧的 git checkout 文件操作。

相关文章:

  • kafka版本升级3.5.1-->3.9.1(集群或单体步骤一致)
  • 学习STC51单片机37(芯片为STC89C52RCRC)智能小车4(循迹小车、优化循迹小车解决转弯不平滑)
  • 基于深度学习的智能视频分析系统:技术与实践
  • (二十七)深度解析领域特定语言(DSL)第四章——词法分析:基于状态机的词法分析器
  • 【Code】COP FOR THE STRUCTURAL USE OF STEEL 2011 (2023 Edition)
  • 【递归、搜索与回溯】FloodFill算法(二)
  • leetcode21-合并两个有序链表
  • STM32外设学习之USB
  • 什么是 OpenSearch?- 比较 OpenSearch 及 Elasticsearch
  • jenkins连接git仓库
  • FreeSWITCH mod_curl 和 mod_xml_rpc 测试
  • Transformer 核心概念转化为夏日生活类比
  • 基于用户的协同过滤推荐算法实现(Java电商平台)
  • 基于物品的协同过滤推荐算法实现(Java电商平台)
  • visual studio小番茄插件某些快捷键失效
  • SQL Server 修改数据库名及物理数据文件名
  • OpenCV CUDA模块图像变形------对图像进行旋转操作函数rotate()
  • Axios面试常见问题详解
  • 线性回归原理推导与应用(九):逻辑回归多分类问题的原理与推导
  • AI 重构的陷阱:如何避免旧项目越改越烂?
  • 建设网站需要什么资质吗/微信seo排名优化软件
  • 在线商城网站制作/新的数据新闻
  • 自己电脑做网站用备案/营销型网站的公司
  • 靠谱网站建设公司价格多少/沈阳头条今日头条新闻最新消息
  • 宁波建网站外包/怎么建公司网站
  • 网站建设趋势/成都网络推广运营公司