分支管理

#git #branch #merge #分支

分支管理#

分支是 Git 最强大的功能之一,允许你在不影响主线的情况下进行并行开发。

创建与切换分支#

# ==================== 创建分支 ====================
# 创建新分支,但不切换到新分支
# 只是在当前提交上创建一个新的指针
git branch <branchname>

# 创建并切换到新分支
# 相当于 git branch <branchname> + git checkout <branchname>
git checkout -b <branchname>

# ==================== 切换分支 ====================
# 切换到指定分支
# 会将工作区文件更新为目标分支的状态
git checkout <branchname>

# ==================== 查看分支 ====================
# 查看所有本地分支,当前分支前有 * 符号标记
git branch

# 查看远程分支
git branch -r

# 查看所有分支(本地 + 远程)
git branch -a
技巧

分支命名规范

推荐使用有意义的分支名,便于理解分支用途:

前缀用途示例
feature/新功能开发feature/user-login
fix/bugfix/Bug 修复fix/login-error
hotfix/紧急修复hotfix/security-patch
release/发布准备release/v1.0.0
docs/文档更新docs/api-guide

合并分支#

将一个分支的更改合并到另一个分支。

# 第一步:切换到目标分支(要接收更改的分支)
git checkout <目标分支>

# 第二步:拉取目标分支的最新更改(可选,但推荐)
git pull origin <目标分支>

# 第三步:将源分支的更改合并到当前所在分支
# 注意:只修改当前所在分支,源分支不受影响
git merge <源分支>

合并示例#

# 场景:将 feature/user-login 分支合并到 main
git checkout main                          # 切换到 main 分支
git pull origin main                       # 拉取 main 的最新代码
git merge feature/user-login               # 合并 feature 分支

# 合并完成后,可以选择删除 feature 分支
git branch -d feature/user-login           # 删除本地分支
git push origin --delete feature/user-login # 删除远程分支

删除分支#

# ==================== 删除本地分支 ====================
# 删除已合并的分支(安全删除)
# 如果分支未合并,Git 会拒绝删除
git branch -d <分支名>

# 强制删除分支,无论是否已合并
# ⚠️ 慎用!未合并的更改会丢失
git branch -D <分支名>

# ==================== 删除远程分支 ====================
# 删除远程仓库上的分支
git push origin --delete <分支名>
⚠️ 注意

删除分支的注意事项

  • git branch -d:只删除已合并的分支,防止误删未合并的工作
  • git branch -D:强制删除,即使分支未合并也会删除
  • 删除远程分支后,其他协作者需要执行 git fetch --prune 清理本地的远程分支引用

分支管理最佳实践#

# 典型的 Git Flow 工作流
git checkout develop                       # 切换到 develop 分支
git checkout -b feature/new-feature        # 创建功能分支
# ... 开发、提交 ...
git checkout develop                       # 切换回 develop
git merge feature/new-feature              # 合并功能分支
git branch -d feature/new-feature          # 删除功能分支
git push origin develop                    # 推送 develop 到远程

相关笔记