Skip to content

Git 分支管理:创建与切换

问题描述

当你在 Git 项目中工作时,经常会遇到需要同时处理多个功能或修复的情况。假设你已经克隆了一个远程 Git 仓库,进行了一些修改,但尚未推送到远程仓库,此时需要开始处理新的功能,同时保留现有的修改。

这种情况下,你需要创建新的本地分支来隔离不同功能的工作,并能灵活地在不同分支之间切换,以便稍后决定是否将两个功能都推送到远程仓库。

解决方案

方法一:使用 git checkout(传统方式)

创建新分支并立即切换到该分支:

bash
git checkout -b NEW_BRANCH_NAME

切换回之前的分支:

bash
git checkout PREVIOUS_BRANCH_NAME

提示

使用 git checkout -b 实际上是两个命令的简写形式:

  • git branch NEW_BRANCH_NAME(创建新分支)
  • git checkout NEW_BRANCH_NAME(切换到新分支)

方法二:使用 git switch(推荐,Git 2.23+)

从 Git 2.23 版本开始,引入了更直观的 git switch 命令:

创建新分支并切换到该分支:

bash
git switch --create NEW_BRANCH_NAME

# 或者使用简写形式
git switch -c NEW_BRANCH_NAME

切换到现有分支:

bash
git switch EXISTING_BRANCH_NAME

为什么推荐使用 git switch?

git switch 命令专门用于分支切换,与 git checkout 相比:

  • 语义更明确,只处理分支切换
  • 减少与文件恢复功能的混淆
  • 提供更清晰的错误信息

完整工作流程

1. 检查当前状态

在切换分支前,首先检查当前工作状态:

bash
git status

重要提示

如果有未提交的更改,Git 会阻止你切换分支(除非使用 stash 功能) 请确保重要更改已提交或暂存后再切换分支

2. 创建并切换到新分支

bash
# 方法一:使用 git switch(推荐)
git switch -c feature/new-feature

# 方法二:使用 git checkout
git checkout -b feature/new-feature

3. 验证当前分支

确认你已成功切换到新分支:

bash
git branch

这个命令会列出所有本地分支,并在当前分支前显示 * 标记。

4. 在分支间切换

bash
# 切换回主分支
git switch main

# 或使用 checkout
git checkout main

5. 推送分支到远程仓库(可选)

如果需要将新分支推送到远程仓库:

bash
git push origin NEW_BRANCH_NAME

注意事项

警告

  • 切换分支前,确保所有重要更改都已提交或暂存
  • 未提交的更改可能会随分支切换而丢失(如果 Git 无法自动合并)
  • 使用 git stash 可以临时保存未提交的更改

可视化工作流程

总结

掌握 Git 分支的创建和切换是高效版本控制的基础。对于现代 Git 版本(2.23+),推荐使用 git switch -c 创建和切换分支,因为它提供了更清晰的语义。无论选择哪种方法,关键是要在切换分支前管理好未提交的更改,以确保代码安全。

记住这个简单的模式:需要新功能时创建分支,完成工作后切换回主分支,保持代码库的整洁和可维护性。