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

相关推荐
知识汲取者3 小时前
Git撤销操作全解析:revert、undo与drop commit的区别与应用
git
cxxx178 小时前
【同步Overleaf, Github】
git·overleaf
染翰9 小时前
Linux root用户安装配置Git
linux·git·后端
老虎海子9 小时前
从零手搓一个 AI 编程助手:Mini Claude Code 完全指南
人工智能·git·vscode·python·github
Cat_Rocky10 小时前
CICD-Git简单学习 操作流程后续补
git·学习
存在的五月雨10 小时前
Git的操作
git
丶Darling.10 小时前
Git 初学者使用手册
git
乐于分享的阿乐12 小时前
Git下载安装与零基础使用完整教程
git
东北甜妹12 小时前
DevOps 和 Git,Gitlab
git·gitlab·devops