IDEA 中进行分支双向同步操作指南
前提准备
查看当前分支
位置:IDEA 右下角状态栏
显示:Git: a (当前分支名)
一、将 b 分支合并到 a 分支(当前在 a 分支)
步骤1:确保 a 分支代码已提交
方式1:快捷键
Ctrl + K (Windows/Linux)
Cmd + K (Mac)
方式2:菜单栏
Git → Commit...
操作:
1. 勾选要提交的文件
2. 输入提交信息
3. 点击 "Commit" 或 "Commit and Push"
步骤2:合并 b 分支到 a 分支
方法一:通过右键菜单
1. 在项目根目录上 右键
2. Git → Merge...
3. 在弹出窗口选择 "b" 分支
4. 点击 "Merge" 按钮
方法二:通过分支列表
1. 点击右下角 "Git: a"
2. 在分支列表中找到 "b" 分支
3. 右键 "b" 分支
4. 选择 "Merge 'b' into 'a'"
方法三:通过 Git 工具窗口
1. Alt + 9 打开 Git 工具窗口
2. 切换到 "Log" 标签
3. 在左侧分支列表找到 "b"
4. 右键 → Merge into Current
步骤3:处理冲突(如果有)
如果出现冲突:
1. IDEA 会弹出 "Conflicts" 对话框
2. 点击 "Merge..." 按钮
3. 进入三方合并界面:
- 左侧:a 分支内容
- 中间:合并结果(可编辑)
- 右侧:b 分支内容
4. 使用工具栏按钮:
- >> 接受右侧(b 分支)
- << 接受左侧(a 分支)
- X 拒绝某一侧
5. 或手动编辑中间窗口
6. 点击 "Apply" 完成
7. 在 Commit 窗口提交合并
步骤4:推送到远程
方式1:快捷键
Ctrl + Shift + K (Windows/Linux)
Cmd + Shift + K (Mac)
方式2:菜单
Git → Push...
方式3:右下角
点击 "Git: a" → Push...
二、将 a 分支合并到 b 分支
步骤1:切换到 b 分支
方法一:通过右下角
1. 点击右下角 "Git: a"
2. 在分支列表找到 "b"
3. 点击 "b" 分支
4. 选择 "Checkout"
方法二:通过主菜单
Git → Branches...
选择 "b" → Checkout
方法三:通过工具栏
导航栏最右侧的分支下拉框
选择 "b" 分支
步骤2:拉取 b 分支最新代码(如果有远程)
1. 右键项目根目录
2. Git → Pull...
3. 确认远程分支是 "origin/b"
4. 点击 "Pull" 按钮
步骤3:合并 a 分支到 b 分支
1. 右键项目根目录
2. Git → Merge...
3. 选择 "a" 分支
4. 点击 "Merge" 按钮
此时通常不会有冲突(因为刚才已经在 a 分支解决过)
步骤4:推送 b 分支
Ctrl + Shift + K (或 Cmd + Shift + K)
确认推送 "b" 分支
点击 "Push"
步骤5:切换回 a 分支
1. 右下角点击 "Git: b"
2. 选择 "a" 分支
3. 点击 "Checkout"
三、完整操作流程(IDEA 图示)
流程图
[当前:a 分支]
↓
[Commit 提交代码] → Ctrl + K
↓
[Merge b 到 a] → 右键项目 → Git → Merge → 选择 b
↓
[解决冲突] → Conflicts 窗口 → Merge...
↓
[Push a 分支] → Ctrl + Shift + K
↓
[切换到 b] → 右下角 → Checkout b
↓
[Pull b 分支] → 右键 → Git → Pull
↓
[Merge a 到 b] → 右键 → Git → Merge → 选择 a
↓
[Push b 分支] → Ctrl + Shift + K
↓
[切换回 a] → 右下角 → Checkout a
↓
[完成]
四、常用快捷键总结
| 操作 | Windows/Linux | Mac |
|---|---|---|
| 提交 | Ctrl + K | Cmd + K |
| 推送 | Ctrl + Shift + K | Cmd + Shift + K |
| 拉取 | Ctrl + T | Cmd + T |
| 更新项目 | Ctrl + T | Cmd + T |
| 查看分支 | - | - |
| Git 工具窗口 | Alt + 9 | Cmd + 9 |
| 查看历史 | Alt + 9 → Log | Cmd + 9 → Log |
五、IDEA 界面位置参考
1. 右下角分支切换区域
┌─────────────────────────────────────┐
│ Git: a │ ← 点击这里
└─────────────────────────────────────┘
点击后显示:
┌─────────────────────────┐
│ Local Branches │
│ ✓ a │
│ b │ ← 选择 b → Checkout
│ Remote Branches │
│ origin/a │
│ origin/b │
└─────────────────────────┘
2. 右键菜单位置
项目根目录
└─ 右键
├─ Git
│ ├─ Commit Directory... (Ctrl+K)
│ ├─ Pull... (Ctrl+T)
│ ├─ Push... (Ctrl+Shift+K)
│ ├─ Merge... ← 点这里
│ ├─ Rebase...
│ └─ Branches...
3. Git 工具窗口
Alt + 9 打开
┌──────────────────────────────────┐
│ Console | Log │ ← 切换标签
├──────────────────────────────────┤
│ Branches │ Commit Graph │
│ ✓ a │ │
│ b │ ● ─── ● │
│ origin/a │ \ / │
│ origin/b │ ● ── │
└──────────────────────────────────┘
六、冲突解决界面详解
三方合并窗口
┌────────────────────────────────────────────────────┐
│ Merge Revisions for <filename> │
├──────────┬────────────────────┬────────────────────┤
│ │ │ │
│ a 分支 │ 合并结果 │ b 分支 │
│ (左侧) │ (中间-可编辑) │ (右侧) │
│ │ │ │
│ <<<<<< │ 手动选择或编辑 │ >>>>>> │
│ │ │ │
├──────────┴────────────────────┴────────────────────┤
│ [<<] [>>] [X] [Apply] [Abort] │
└────────────────────────────────────────────────────┘
工具栏按钮说明:
<< : 接受左侧(a 分支)
>> : 接受右侧(b 分支)
X : 拒绝某一侧的修改
Apply : 应用合并结果
Abort : 取消合并
七、实战示例演示
场景:a 分支有新功能,b 分支有 bug 修复
第一步:在 a 分支合并 b 的 bug 修复
1. 当前在 a 分支(右下角显示 Git: a)
2. Ctrl + K 提交 a 的代码
- Commit message: "完成新功能开发"
3. 右键项目 → Git → Merge...
4. 选择 "b" → Merge
5. IDEA 自动合并(无冲突)或弹出冲突窗口
6. Ctrl + Shift + K 推送
第二步:在 b 分支合并 a 的新功能
1. 右下角点击 "Git: a"
2. 选择 "b" → Checkout
3. 等待 IDEA 切换分支(状态栏变为 Git: b)
4. 右键项目 → Git → Merge...
5. 选择 "a" → Merge
6. 通常直接成功(快进合并)
7. Ctrl + Shift + K 推送
8. 右下角切换回 "a" 分支
八、注意事项
⚠️ 操作前检查
✓ 确认当前分支(右下角)
✓ 确认没有未提交的文件(Ctrl + K 查看)
✓ 确认网络连接(如需 Pull/Push)
⚠️ 合并后检查
✓ 运行项目测试是否正常
✓ 检查合并后的代码逻辑
✓ 确认推送成功(查看 Push 结果)
⚠️ 常见问题
| 问题 | 解决方法 |
|---|---|
| Checkout 失败 | 先提交或 Stash 当前修改 |
| Merge 失败 | 检查是否有冲突,手动解决 |
| Push 被拒绝 | 先 Pull 远程代码再 Push |
| 找不到分支 | 执行 Fetch 更新分支列表 |
九、推荐插件
Git 增强插件
1. GitToolBox
- 显示每行代码的作者和时间
- 增强分支管理
2. Git Flow Integration
- 支持 Git Flow 工作流
安装方式:
File → Settings → Plugins → Marketplace
搜索插件名称 → Install
十、总结速查表
| 操作 | IDEA 操作路径 |
|---|---|
| b → a | 在 a 分支 → 右键 → Git → Merge → 选 b |
| a → b | 切到 b → 右键 → Git → Merge → 选 a |
| 提交 | Ctrl + K |
| 推送 | Ctrl + Shift + K |
| 切换分支 | 右下角 → 选分支 → Checkout |
| 解决冲突 | Conflicts 窗口 → Merge → 三方对比 |
| 查看历史 | Alt + 9 → Log 标签 |