Appearance
分支操作
概述
掌握分支的基本操作是使用 Git 进行日常开发的基础。本节将详细介绍如何创建、切换、删除和管理分支。
git branch 命令
git branch 是管理分支的核心命令,用于创建、列出和删除分支。
创建分支
bash
# 基于当前提交创建新分支
git branch feature-login
# 基于指定提交创建分支
git branch bugfix-123 a1b2c3d
# 基于远程分支创建本地分支
git branch local-feature origin/feature
# 创建分支并跟踪远程分支
git branch --track feature origin/feature列出分支
bash
# 列出所有本地分支
git branch
# 列出所有远程分支
git branch -r
# 列出所有分支(本地和远程)
git branch -a
# 显示分支及其最后一次提交
git branch -v
# 显示分支及其上游分支和领先/落后情况
git branch -vv输出示例:
feature-login a1b2c3d Add login page
* main b2c3d4e [origin/main] Update README
hotfix-123 c3d4e5f Fix critical bug删除分支
bash
# 删除已合并的分支
git branch -d feature-login
# 强制删除分支(即使未合并)
git branch -D feature-login
# 删除远程分支
git push origin --delete feature-login
# 删除已不存在的远程分支的本地引用
git branch -d -r origin/old-feature
git fetch --prune # 或 git remote prune origin重命名分支
bash
# 重命名当前分支
git branch -m new-name
# 重命名指定分支
git branch -m old-name new-name
# 强制重命名(覆盖已存在的分支)
git branch -M new-namegit checkout 命令
git checkout 是一个多功能命令,可用于切换分支和恢复文件。
切换分支
bash
# 切换到已存在的分支
git checkout feature-login
# 切换到上一个分支
git checkout -
# 切换到远程分支并创建本地跟踪分支
git checkout -b feature-login origin/feature-login
# 或简写为
git checkout --track origin/feature-login创建并切换分支
bash
# 创建并立即切换到新分支
git checkout -b feature-login
# 基于指定提交创建并切换
git checkout -b hotfix-123 a1b2c3d
# 基于远程分支创建并切换
git checkout -b feature-login origin/feature-login
# 强制创建(覆盖已存在的分支)
git checkout -B feature-login切换分支注意事项
bash
# 切换分支前,确保工作区干净
git status
# 如果有未提交的修改,可以:
# 1. 提交修改
git add .
git commit -m "Work in progress"
# 2. 暂存修改
git stash
# 3. 强制切换(会丢失未提交的修改)
git checkout -f feature-logingit switch 命令
Git 2.23+ 引入了 git switch 命令,专门用于切换分支,使命令更加清晰。
基本用法
bash
# 切换到已存在的分支
git switch feature-login
# 切换到上一个分支
git switch -
# 切换到默认分支
git switch main创建并切换
bash
# 创建新分支并切换
git switch -c feature-login
# 基于指定提交创建并切换
git switch -c hotfix-123 a1b2c3d
# 基于远程分支创建并切换
git switch -c feature-login origin/feature-login
# 强制创建(覆盖已存在的分支)
git switch -C feature-login分离 HEAD 状态
bash
# 切换到特定提交(分离 HEAD)
git switch --detach a1b2c3d
# 切换到标签
git switch --detach v1.0.0checkout vs switch
bash
# 旧命令(多功能)
git checkout feature-login # 切换分支
git checkout -b feature-login # 创建并切换
git checkout -- file.txt # 恢复文件
# 新命令(职责分离)
git switch feature-login # 切换分支
git switch -c feature-login # 创建并切换
git restore file.txt # 恢复文件分支操作工作流
功能开发流程
bash
# 1. 从 main 创建功能分支
git checkout main
git pull origin main
git checkout -b feature-user-auth
# 2. 开发并提交
git add .
git commit -m "Add user authentication"
# 3. 推送到远程
git push -u origin feature-user-auth
# 4. 合并后删除分支
git checkout main
git pull origin main
git branch -d feature-user-auth
git push origin --delete feature-user-auth热修复流程
bash
# 1. 从生产分支创建热修复分支
git checkout production
git checkout -b hotfix-critical-bug
# 2. 修复并提交
git add .
git commit -m "Fix critical security bug"
# 3. 合并到生产分支和开发分支
git checkout production
git merge hotfix-critical-bug
git checkout develop
git merge hotfix-critical-bug
# 4. 删除热修复分支
git branch -d hotfix-critical-bug分支管理技巧
查看分支状态
bash
# 查看已合并到当前分支的分支
git branch --merged
# 查看未合并到当前分支的分支
git branch --no-merged
# 查看包含特定提交的分支
git branch --contains a1b2c3d
# 查看不包含特定提交的分支
git branch --no-contains a1b2c3d批量删除分支
bash
# 删除所有已合并的分支(排除 main 和 develop)
git branch --merged | grep -vE "^\*|main|develop" | xargs git branch -d
# 删除所有以 feature/ 开头的分支
git branch | grep "feature/" | xargs git branch -D
# 删除所有远程已删除的本地分支引用
git fetch --prune分支描述
bash
# 为分支添加描述
git branch feature-login --edit-description
# 查看分支描述
git config branch.feature-login.description常见问题
切换分支失败
bash
# 错误:本地修改会被覆盖
error: Your local changes would be overwritten by checkout
# 解决方案 1:暂存修改
git stash
git checkout feature-login
git stash pop
# 解决方案 2:提交修改
git add .
git commit -m "WIP: current work"
# 解决方案 3:放弃修改
git checkout -f feature-login分支删除失败
bash
# 错误:分支未合并
error: The branch 'feature-login' is not fully merged.
# 确认是否真的要删除
git diff main..feature-login
# 强制删除
git branch -D feature-login恢复误删分支
bash
# 查看操作历史,找到分支最后的提交
git reflog
# 恢复分支
git branch feature-login a1b2c3d总结
git branch用于创建、列出和删除分支git checkout可切换分支,但功能过多git switch是 Git 2.23+ 推荐的切换分支命令- 切换分支前确保工作区干净
- 定期清理已合并的分支
下一步
学习完分支操作后,建议继续学习:
