当前位置: 首页 > 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 文件操作。

http://www.xdnf.cn/news/1027027.html

相关文章:

  • yum查看历史操作
  • 高并发场景下接口安全实现方案:全方位构建防护体系
  • 重复的囚徒困境博弈中应该如何决策?--阿克塞尔罗德竞赛(Axelrod‘s Tournament)实验
  • Spring注解的深层含义
  • 人工智能 倒底是 智能 还是 智障?
  • OmoFun动漫官网,动漫共和国最新入口|网页版
  • java集合篇(七) ---- ArrayList 类
  • BeckHoff_FB --> F_SEQ_X3_TrigJob 函数
  • TCP客户端进程分割输入输出
  • 【Qt】工具介绍和信号与槽机制
  • SpringCloud2020-alibaba
  • DDD各种架构详细介绍
  • CLONE——面向长时任务的闭环全身遥操:其MoE架构可实现“蹲着走”,且通过LiDAR里程计和VR跟踪技术解决位置偏差问题
  • 【61 Pandas+Pyecharts | 基于Apriori算法及帕累托算法的超市销售数据分析可视化】
  • 力扣-279.完全平方数
  • 三维重建 —— 3. 单视几何
  • 国产用例管理工具评测:Gitee Test、禅道、蓝凌测试、TestOps 哪家更懂研发协同?
  • 全流程TOUGH系列软件实践技术应用
  • electron-builder打包配置(应用名、安装包、图标、快捷方式、自定义文件关联启动等)
  • Matlab的GUI编程之一
  • 【Android】EventBus详解
  • 基于Redis实现分布式锁
  • 安科瑞亮相2025 SNEC国际太阳能光伏与智慧能源展
  • 7N65-ASEMI智能照明领域专用7N65
  • onxxrunrime问题集锦
  • 黑色金属生产车间:DeviceNet到Modbus RTU网关的“无声桥梁”
  • 【DNS】在 Windows 下修改 `hosts` 文件
  • java哨兵底层原理
  • 社区养老模式:现状、困境与破局之道
  • PH热榜 | 2025-06-13