Git 创建新分支 和 合并分支 的详细命令解析

admin2025-09-01 17:25:053400

一、创建新分支

1. 创建并切换到新分支

git checkout -b <新分支名>

作用:

基于当前分支创建新分支

自动切换到新分支

示例:

git checkout -b feature/user-login # 创建并切换到 feature/user-login 分支

2. 仅创建分支(不切换)

git branch <新分支名>

示例:

git branch hotfix/header-bug # 创建 hotfix/header-bug 分支(仍处于当前分支)

3. 基于特定提交/分支创建

git checkout -b <新分支名> <源分支或提交ID>

示例:

git checkout -b release/v1.2 develop # 基于 develop 分支创建 release 分支

4. 将本地分支推送到远程

git push -u origin <分支名> # -u 设置上游分支

示例:

git push -u origin feature/user-login # 推送并关联远程分支

二、合并分支

1. 基础合并(Fast-Forward)

git checkout main # 切换到目标分支(如 main)

git merge feature/login # 将 feature/login 合并到当前分支

适用场景:

目标分支没有新提交时,Git 会直接移动指针(无冲突风险)

2. 非快进合并(生成合并提交)

git merge --no-ff feature/login # 强制创建合并提交

优点:

保留完整分支历史,便于追踪

推荐:团队协作时使用

3. 合并冲突解决流程

当合并出现冲突时:

# 1. 查看冲突文件(文件中会标记 <<<<<<< ======= >>>>>>>)

git status

# 2. 手动编辑文件解决冲突,保留需要的代码

# 3. 标记冲突已解决

git add <冲突文件>

# 4. 完成合并提交

git commit -m "Merge branch 'feature/login' into main"

4. 取消合并

git merge --abort # 终止合并,恢复合并前状态

三、合并方式对比

合并类型命令适用场景历史记录特点

Fast-Forward

git merge

目标分支无新提交

线性历史,不显示合并分支

No-Fast-Forward

git merge --no-ff

团队协作/需保留分支历史

生成合并提交,保留分支拓扑

Rebase

git rebase

整理本地提交历史

线性历史,修改提交哈希

四、IDEA 中的可视化操作

1. 创建分支

右下角点击 Git Branches → New Branch

输入分支名 → 选择基于哪个分支创建

2. 合并分支

切换到目标分支(如 main)

右键要合并的分支(如 feature/login) → Merge into Current

冲突时会弹出 Merge Conflicts 工具,可视化解决

3. 查看合并结果

Git → Show History:查看带分支拓扑的提交图

右键提交记录 → Compare with...:对比分支差异

五、最佳实践建议

分支命名:

使用 feature/、hotfix/ 等前缀明确分支用途

避免使用 update、tmp 等模糊名称

合并前检查:

git diff <源分支> <目标分支> # 预览差异

git log --graph --oneline # 查看提交历史

保护主分支:

使用 --no-ff 合并到 main 或 develop

推荐通过 Pull Request 代码评审后合并

清理废弃分支:

git branch -d <分支名> # 删除已合并的分支

git branch -D <分支名> # 强制删除未合并的分支

git push origin --delete <远程分支名> # 删除远程分支

六、典型工作流示例

通过以上命令和规范,您可以高效管理分支生命周期,减少协作冲突。