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

git checkout 详解

git checkout 是 Git 中最常用的命令之一,主要用于切换分支恢复文件。以下是核心功能的详细说明:


1. 切换分支
git checkout <branch-name>
  • 切换到已存在的本地分支
  • 示例:git checkout develop
git checkout -b <new-branch>
  • 创建并切换到新分支(相当于 git branch <new-branch> + git checkout <new-branch>
  • 示例:git checkout -b feature/login
git checkout --track origin/<remote-branch>
  • 创建本地分支并跟踪远程分支
  • 示例:git checkout --track origin/main

2. 恢复文件
git checkout -- <file-path>
  • 丢弃工作区的修改(未 git add 的改动)
  • 危险操作!不可撤销
  • 示例:git checkout -- src/index.js
git checkout <commit-id> -- <file-path>
  • 从指定提交恢复文件到暂存区和工作区
  • 示例:git checkout a1b2c3d -- README.md

3. 分离头指针模式
git checkout <commit-id>
  • 进入分离头指针状态(不关联分支)
  • 查看历史提交的内容(只读模式)
  • 示例:git checkout HEAD~2

4. 切换标签
git checkout <tag-name>
  • 切换到标签指向的提交(同样进入分离头指针状态)
  • 示例:git checkout v1.0.0

5. 特殊语法
git checkout -p
  • 交互式选择要恢复的代码块(类似 git add -p 的反向操作)
git checkout @{-1}
  • 快速切换回上一个分支
  • 示例:从 feature/login 返回 maingit checkout @{-1}

⚠️ 注意事项

  1. 未提交的修改:切换分支时如果有未提交的修改,Git 会阻止切换(除非使用 -f 强制)
  2. 分离头指针警告:在此状态下提交的更改不会属于任何分支,需要手动创建分支保存
  3. 新版本替代命令(Git 2.23+):
    • git switch:专门处理分支切换
    • git restore:专门处理文件恢复

典型工作流示例

# 创建并切换到新分支 
git checkout -b fix/bug-123 # 修改文件后放弃更改 
git checkout -- src/utils.js# 切换回主分支 
git checkout main # 从历史提交恢复配置文件
git checkout 89a4cfe -- config.yml

最佳实践:优先使用 git switch 和 git restore(Git 2.23+),语义更清晰且不易误操作。

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

相关文章:

  • 危险品运输行业观察
  • Kafka环境搭建全攻略:从Docker到Java实战
  • Logback-spring.xml 配置屏蔽特定路径的日志
  • Vue3+Element Plus动态表格列宽设置
  • 【写实交互数字人】实时数字人助力政务变革:技术、产品与应用价值的全景剖析
  • 【插件推荐】WebRTC Protect — 防止 IP 泄漏
  • 苹果越来越像安卓,华为越来越像苹果
  • 电路图识图基础知识-电动机软启动器技术解析与应用(二十五)
  • 【Zephyr 系列 22】从单机开发到平台化:构建你自己的 Zephyr 物联网开发平台
  • 【结合JSR380自定义校验】
  • Altera系列FPGA基于ADV7180解码PAL视频,纯verilog去隔行,提供2套Quartus工程源码和技术支持
  • 智慧物流园区——解读华为智慧物流园区解决方案【附全文阅读】
  • 上海市计算机学会竞赛平台2022年4月月赛丙组圆环独立集(一)
  • 基于 Spring Cloud Gateway + Sentinel 实现高并发限流保护机制
  • PHP基础-控制结构
  • 全链路实时感知:网络专线端到端监控运维
  • SwiftUI隐藏返回按钮保留右滑手势方案
  • MyBatis原理
  • 关于阿里云-云消息队列MQTT的连接和使用,以及SpringBoot的集成使用
  • P8784 [蓝桥杯 2022 省 B] 积木画
  • 基于 STM32 七段数码管显示模块详解
  • 如何设置爬虫的访问频率?
  • 基于51单片机的直流电机运动控制proteus仿真
  • vue二级路由的写法,以及动态路由的匹配和获取动态参数的值
  • FreeSWITCH mod_curl 和 mod_xml_rpc 测试
  • JVM 内存、JMM内存与集群机器节点内存的联系
  • 【redis——缓存穿透】
  • 基于PSO粒子群优化的VMD-LSTM时间序列预测算法matlab仿真
  • git 下载安装并连接gitee
  • 一键给你的网页增加 ios26 液态玻璃效果