无需登录 数据私有 本地保存

Git 合并冲突模拟解决器 - 练习解决冲突

9
0
0
0

Git 合并冲突模拟器

在安全环境中练习识别和解决 Git 合并冲突,提升你的版本控制技能

已解决: 0
选择冲突场景
冲突标记图例: HEAD (当前分支) 传入分支 冲突标记
HEAD — main 当前分支
// 选择一个场景
就绪
传入 — feature 合并来源
// 选择一个场景
常见问题与知识点

Git 合并冲突发生在两个分支对同一文件的同一部分进行了不同修改时。当执行 git mergegit rebase 时,Git 无法自动判断应该保留哪个版本,就会标记冲突并让开发者手动解决。冲突文件中会包含特殊标记:<<<<<<<=======>>>>>>>,分别标识当前分支和传入分支的差异部分。

  • <<<<<<< HEAD(或当前分支名):标记当前分支(你所在的分支)的代码块开始
  • =======:分隔两个冲突版本的分界线
  • >>>>>>> feature(或传入分支名):标记传入分支(被合并的分支)的代码块结束
解决冲突时,你需要删除这些标记,并保留最终想要的代码。

最佳实践包括:频繁拉取远程变更保持同步;将功能拆分为小而专注的提交;团队成员之间充分沟通分工;使用 feature 分支隔离开发;定期 git rebase 保持分支整洁;配置 .gitignore 避免无关文件冲突;以及使用现代 IDE 的 Git 集成工具提前发现潜在冲突。

git merge 会创建一个合并提交,保留完整的分支历史,所有冲突一次性解决。git rebase 则是将提交逐个应用到目标分支上,可能在每个提交处都遇到冲突,需要逐步解决。Rebase 产生更线性的历史,但解决冲突的过程更细粒度。推荐在个人 feature 分支上使用 rebase,在公共分支间使用 merge。

解决冲突后:git add <文件名> 标记为已解决,然后 git commit 完成合并(merge 模式)或 git rebase --continue(rebase 模式)。其他实用命令:git merge --abort 取消合并、git diff 查看差异、git status 检查状态、git mergetool 启动可视化合并工具。

现代 IDE(如 VS Code、JetBrains 系列)提供了可视化冲突解决界面,通常显示并排对比视图,并提供快捷按钮:Accept Current(接受当前)、Accept Incoming(接受传入)、Accept Both(接受两者)、Compare Changes(对比变更)。VS Code 还支持在编辑器内直接点击操作,极大简化了冲突解决流程。