git checkout

文章目录

  • 1.简介
  • 2.格式
  • 3.选项
  • 4.示例
    • [1. 切换分支](#1. 切换分支)
    • [2. 创建并切换到新分支](#2. 创建并切换到新分支)
    • [3. 强制创建分支(覆盖已存在分支)](#3. 强制创建分支(覆盖已存在分支))
    • [4. 恢复文件](#4. 恢复文件)
    • [5. 切换到历史提交(分离头指针状态)](#5. 切换到历史提交(分离头指针状态))
    • [6. 创建独立空白分支](#6. 创建独立空白分支)
    • [7. 跟踪远程分支](#7. 跟踪远程分支)
    • 8.常见组合
  • 5.小结
  • 参考文献

1.简介

git checkout 是 Git 中一个功能强大的命令,主要用于切换分支恢复工作区文件。它可以帮助你在不同分支之间快速切换,也可以将文件恢复到之前的某个提交状态。

不过需要注意的是,由于 git checkout 承担了两种不同的职责,Git 2.23 版本引入了更专用的 git switch(切换分支)和 git restore(恢复文件)命令。但 git checkout 依然广泛使用,理解它仍然很有必要。

2.格式

bash 复制代码
# 切换分支的格式
git checkout [-b|-B] <new-branch> [<start-point>]

# 恢复文件的格式
git checkout [<提交>] -- <文件路径>

起始点(start-point)是指你希望新分支基于哪个提交(commit)来创建。

起始点可以是如下类型:

起始点类型 示例 说明
本地分支名 main, develop 新分支基于该分支的最新提交
远程分支名 origin/main, upstream/develop 新分支基于远程分支的最新提交(常用于跟踪远程分支)
提交哈希 abc1234, 3f4a5b6 新分支基于历史中的某个特定提交
标签 v1.2.3, release-2024 新分支基于某个标签指向的提交
HEAD 相对引用 HEAD, HEAD~2, HEAD^ HEAD 表示当前分支的最新提交,~2 表示往前 2 个提交

3.选项

bash 复制代码
-b <分支名>
	创建并切换到新分支
-B <分支名>
	强制创建并切换到新分支(如果分支已存在则重置)
--track
	创建新分支并跟踪远程分支
--orphan <分支名>
	创建一个没有父提交的全新分支(适合创建全新独立项目)
-f, --force
	强制切换(丢弃未提交的更改,需谨慎)
-- <pathspec>
	恢复指定文件
.
	恢复当前目录所有文件

4.示例

1. 切换分支

bash 复制代码
# 切换到已有分支
git checkout main
git checkout develop

# 切换到上一个分支(快速往返)
git checkout -

2. 创建并切换到新分支

bash 复制代码
# 基于当前分支创建新分支
git checkout -b feature/new-login

# 基于指定分支创建新分支
git checkout -b feature/new-login develop

# 基于远程分支创建本地跟踪分支
git checkout -b feature/new-login origin/develop

3. 强制创建分支(覆盖已存在分支)

bash 复制代码
# 如果 feature/old 分支已存在,会强制重置到当前 HEAD
git checkout -B feature/old

4. 恢复文件

bash 复制代码
# 恢复工作区的某个文件到最近一次提交的状态
git checkout -- main.go

# 恢复当前目录所有文件(慎用!会丢失未提交的改动)
git checkout -- .

# 从指定的提交中恢复某个文件
git checkout abc1234 -- main.go

5. 切换到历史提交(分离头指针状态)

bash 复制代码
# 切换到某个历史提交(会进入 detached HEAD 状态)
git checkout abc1234

# 基于历史提交创建新分支(保留修改)
git checkout -b new-branch abc1234

6. 创建独立空白分支

bash 复制代码
# 创建一个全新空白分支(没有提交历史)
git checkout --orphan gh-pages
# 清空暂存区
git rm -rf .
# 添加新内容...

7. 跟踪远程分支

bash 复制代码
# 创建本地分支并自动跟踪远程分支
git checkout --track origin/feature/remote-branch

8.常见组合

使用场景 推荐命令 说明
切换分支 git checkout main 切换到 main 分支
创建并切换新分支 git checkout -b new 基于当前分支创建
恢复单个文件 git checkout -- file.go 放弃该文件的本地修改
放弃所有本地修改 git checkout -- . ⚠️ 不可逆,请确认后执行
切换到上一个分支 git checkout - 快速在两个分支间切换
检出历史提交 git checkout abc123 进入分离头指针状态,建议配合 -b 创建分支

5.小结

git checkout 既能切换分支,也能恢复文件。它的 -b 选项用于创建新分支,-- 用于恢复文件。

推荐新用户了解 git switchgit restore 作为更专注的替代。


参考文献

Git - git-checkout Documentation

相关推荐
深海鱼在掘金9 小时前
Git 完全指南 —— 第1章:Git 概览与版本控制演进
git
noravinsc1 天前
关于Git Flow
git
蜜獾云1 天前
在Git中配置用户名和密码
git
scx_link1 天前
通过git bash在本地创建分支,并推送到远程仓库中
开发语言·git·bash
南大白1 天前
IntelliJ IDEA 运行时的 JVM 本地内存溢出崩溃
git
码农小旋风1 天前
Claude Code 基础用法大全:对话、分析、修改、测试、Git 和工作流
人工智能·git·chatgpt·claude
南大白1 天前
Git 撤回提交完整方案
git
像风一样的男人@1 天前
python --实现代理服务器
git·ui
sbjdhjd1 天前
从零搭建企业级 CI/CD(下):Jenkins+GitLab+Harbor 全链路实战指南
git·servlet·ci/cd·云原生·云计算·gitlab·jenkins
码云数智-大飞1 天前
Go Channel 详解:并发通信的正确姿势
前端·数据库·git