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

相关推荐
云雀衔光2 小时前
多个 MCP Server 怎么编排:数据库 / Redis / Git / 飞书一把梭
java·数据库·人工智能·redis·git·语言模型·飞书
Java后端的Ai之路3 小时前
Git pull弹出vim编辑器完整排查指南
开发语言·人工智能·git·编辑器·vim
云泽80813 小时前
Git 版本控制系统(下):从 .git 目录结构到冲突解决机制详解
大数据·git·elasticsearch
麻辣布丁20 小时前
Git冲突原因与解决方法全解
大数据·git·elasticsearch
一支黑色の铅笔1 天前
VSCode 克隆Git项目
ide·git·vscode
拽着尾巴的鱼儿1 天前
Idea:Cannot Run Git 无法运行git
java·git·intellij-idea
y小川1 天前
【git】移除远端已删除的git分支
git
OsDepK2 天前
项目快速Git至仓库(完整版)
大数据·git·elasticsearch·搜索引擎
妙码生花2 天前
使用git更新ai-go-admin框架
前端·人工智能·git·golang·typescript·php
朝阳5812 天前
如何用 AI 自动生成规范的 Git 提交信息:从暂存区 diff 到 Conventional Commit
人工智能·git