我来为您详细介绍一下 git branch 命令。它是 Git 版本控制中最核心、最常用的命令之一,用于管理分支。
核心概念:什么是分支?
在深入命令之前,理解“分支”的概念至关重要。
- 分支就像一条独立的时间线或工作线。
- 默认情况下,每个 Git 仓库都有一个主时间线,叫做
master或main分支。 - 你可以从任意时间点, 基于主分支来创建新的分支,在新分支上进行开发、实验或修复Bug,而不会影响到主分支。
- 分支之间可以自由切换、合并,这使得并行开发和版本管理变得非常灵活。
git branch 命令就是用来创建、列出、重命名和删除这些分支的工具。
命令详解及常用选项
1. 列出分支
这是最常用的功能,用于查看当前仓库的所有分支(只显示本地分支)。
git branch
- 输出列表中,当前所在的分支前会有一个星号
*。 - 只显示本地分支。
查看更多信息:
git branch -v
# 或
git branch --verbose
- 显示每个分支最后一次提交的提交哈希和提交信息。
查看所有分支(包括远程跟踪分支):
git branch -a
# 或
git branch --all
- 本地分支会正常显示。
- 远程跟踪分支(如
origin/main)会以红色或特定颜色显示,通常前缀为remotes/。
只查看远程的分支
git branch -r
# 或
git branch --remote
查看已合并/未合并到当前分支的分支:
git branch --merged # 查看已合并到当前分支的分支
git branch --no-merged # 查看未合并到当前分支的分支
- 这对于清理已完成功能的分支非常有用。
2. 创建分支
创建一个新的分支,但不会自动切换到该分支。
git branch <branch-name>
- 示例:
git branch feature-login - 新分支会从你当前所在分支的最新提交(HEAD) 创建出来。
- 创建后,你仍然在当前分支, 并不会切换到新的分支"feature-login"
从特定提交创建分支:
git branch <branch-name> <commit-hash>
- 示例:
git branch hotfix abc1234 - 这在需要基于某个历史版本进行修复时非常有用。
3. 删除分支
当一个分支的工作已经完成并合并后,通常可以删除它。
安全删除(如果分支已合并):
git branch -d <branch-name>
# 或
git branch --delete <branch-name>
- 如果该分支的改动已经合并到其他分支,Git 会允许删除。
- 如果分支未合并,Git 会阻止删除,以防止数据丢失。
强制删除(无论是否合并):
git branch -D <branch-name>
- 谨慎使用! 这会直接删除分支及其所有未合并的提交。
删除远程跟踪分支(在本地清理):
git branch -d -r origin/<branch-name> # 删除本地的远程跟踪引用
- 这并不会真正删除远程仓库的分支。要删除远程分支,需要使用:
git push origin --delete <branch-name>
4. 重命名分支
git branch -m <old-name> <new-name> # 重命名指定分支
git branch -m <new-name> # 重命名当前分支
- 示例:
git branch -m fix-typo feature-awesome
5. 设置跟踪关系
这是高级但重要的功能,将本地分支与远程分支关联起来。
git branch -u origin/<remote-branch-name>
# 或
git branch --set-upstream-to=origin/<remote-branch-name>
- 设置后,在该分支上使用
git push或git pull时,如果不指定参数,Git 就知道该推送到或从哪里拉取代码。 - 通常,在创建分支时使用
git checkout -b <branch> origin/<branch>或git switch -c <branch> origin/<branch>会更方便地建立跟踪。
与其他关键命令的协作
git branch 通常不单独使用,而是与以下命令紧密配合:
-
git checkout <branch-name>或git switch <branch-name>:git branch创建分支,git checkout/switch切换分支。- 组合技(创建并切换):
git checkout -b <new-branch-name> # 或(更语义化) git switch -c <new-branch-name>
-
git merge <branch-name>:- 将指定分支的修改合并到当前分支。
- 完成功能开发后,你会切回
main分支,然后执行git merge feature-xxx。
-
git push:- 将本地分支推送到远程仓库,与团队共享。
- 首次推送新分支:
git push -u origin <branch-name>(-u参数会同时设置跟踪关系)。
典型工作流示例
假设你要开发一个新功能:
# 1. 确保在主分支,并获取最新代码
git checkout main # 在本地切换到主分支main
git pull origin main # 获取最新的代码
# 2. 创建并切换到功能分支
git checkout -b feature-user-profile # 创建一个新分支, 用于本次的修改和迭代
# 3. 进行开发,多次提交...
git add .
git commit -m "完成用户头像上传功能"
# 4. 将分支推送到远程(首次)-u的作用是建立上游关系, upstream
git push -u origin feature-user-profile
# 5. 功能完成后,在主分支上进行合并
git checkout main
git pull origin main # 再次确保最新的代码
git merge feature-user-profile # 把新分支的开发, 合并到main分支上来.
git push origin main # 推到远程的仓库
# 6. (可选)删除本地和远程的功能分支
git branch -d feature-user-profile
git push origin --delete feature-user-profile
总结:git branch 常用命令速查表
| 命令 | 作用 |
|---|---|
git branch | 列出本地分支 |
git branch -a | 列出所有分支(本地+远程) |
git branch <name> | 创建新分支(不切换) |
git branch -d <name> | 安全删除分支(已合并) |
git branch -D <name> | 强制删除分支(未合并) |
git branch -m <new-name> | 重命名当前分支 |
git branch --merged | 查看已合并分支 |
git checkout -b <name> | 创建并切换到新分支(经典) |
git switch -c <name> | 创建并切换到新分支(推荐) |
理解并熟练使用 git branch 是掌握 Git 工作流的基础,它让你能安全、高效地在不同任务间并行工作。