图文详解:Git分支创建、合并与冲突解决|新手零门槛完整教程
图文详解Git分支创建、合并与冲突解决新手零门槛完整教程在上一篇 GitHub 上传代码教程里我们掌握了基础的add → commit → push提交流程。但真正进入项目开发和团队协作分支操作才是 Git 的核心灵魂也是新手必须跨过的一道坎。很多同学刚接触分支时会一头雾水好好的主分支不用为什么要开分支切换分支代码会不会丢合并冲突到底怎么解这篇教程全程配操作截图从本地命令行操作到 GitHub 线上 PR 协作流程再到合并冲突解决一步一步带你吃透 Git 分支。一、先搞懂分支到底是什么1. 通俗理解分支你可以把分支想象成代码的「平行副本」主分支默认叫main或master存放稳定、可正常运行的正式代码开发新功能、修复 Bug 时从主分支「切」出一个独立副本你在副本里随便改代码都不会影响主分支的稳定版本功能开发测试完成后再把副本的改动「合并」回主分支2. 为什么一定要用分支更安全不会把半成品、有 Bug 的代码直接提交到主干避免搞崩线上项目更高效多人团队可以同时在不同分支开发不同功能互不干扰更灵活功能做一半需要紧急修 Bug随时切换分支代码不会混乱3. 常见分支类型主分支main/master存放正式发布的代码功能分支feature/xxx用于开发新功能如feature/user-login修复分支fix/xxx用于修复 Bug如fix/homepage-crash热修复分支hotfix/xxx用于线上紧急问题修复二、方法一命令行本地分支操作基础必学这是最核心的基础操作我们以「从主分支创建功能分支开发完成后合并回主分支」为例全程演示。步骤 1查看当前所在分支打开终端 / Git Bash进入你的项目文件夹执行gitbranch执行后会列出所有本地分支前面带*号的就是你当前所在的分支。下图完整演示了查看、创建、切换的全流程初始状态在master主分支只有一个默认分支。步骤 2创建并切换到新分支方式一两步操作先创建再切换# 创建名为 dev 的新分支gitbranch dev# 切换到 dev 分支gitcheckout dev方式二一步到位日常开发推荐gitcheckout-bdev-b branch checkout创建分支的同时直接切换过去效率更高是日常开发最常用的写法。切换完成后再次执行git branch可以看到*已经移动到dev分支上代表当前工作分支切换成功。步骤 3在分支上修改并提交代码切换到新分支后就可以正常编写代码了。修改完成后执行常规的提交操作gitadd.gitcommit-mfeat: 完成用户登录页面开发此时所有的提交都只保存在dev分支里主分支的代码完全不受影响。步骤 4切换回主分支功能开发完成后先切回要合并到的目标分支main/master再执行合并gitcheckout main关键原则要把 A 分支合并到 B 分支就必须先切换到 B 分支再执行 merge 命令。步骤 5将功能分支合并到主分支在主分支下执行合并命令gitmerge dev如果没有冲突终端会提示Fast-forward快进合并代表合并顺利完成。此时主分支就已经包含了 dev 分支的所有代码改动。步骤 6可选删除已合并的分支分支合并完成后就完成了使命可以删除以保持仓库整洁gitbranch-ddev如果分支还没合并想要强制删除用大写-Dgitbranch-Ddev三、方法二GitHub 远程分支 PR 合并团队协作标准流程实际工作中不会直接在本地合并完就推送主干而是通过Pull Request简称 PR拉取请求完成合并本地推分支 → 线上提 PR → 代码审查 → 合并到主干。这是所有研发团队的标准协作规范。步骤 1将本地分支推送到 GitHub在本地功能分支开发完成后执行推送命令把本地分支同步到 GitHub 远程仓库gitpush-uorigin feature/login-u参数会绑定本地分支和远程分支后续再推送只需要输入git push即可。步骤 2在 GitHub 创建 Pull Request推送成功后刷新你的 GitHub 仓库页面顶部会自动出现黄色提示条点击Compare pull request进入 PR 创建页。下图是标准的 PR 创建页面各个区域说明上方确认合并方向base: main是目标分支compare: 你的分支是源分支中间填写 PR 标题和详细描述说明本次改动的内容、实现逻辑右侧可指定审查人、标签、里程碑等底部绿色按钮提交 PR填写完成后点击底部绿色的Create pull request按钮PR 就创建成功了。步骤 3代码审查与合并 PRPR 创建后团队成员可以查看代码差异、留言评论、提出修改意见。确认代码无误后就可以执行合并进入 PR 详情页滚动到页面底部找到绿色的Merge pull request按钮点击后填写合并说明再点击Confirm merge确认合并完成后功能分支的代码就正式合入主分支了。最后可以点击Delete branch删除远程的功能分支保持仓库整洁。四、重点难点合并冲突产生与解决1. 冲突什么时候会出现当两个分支修改了同一个文件的同一行代码Git 无法自动判断该保留哪一份就会抛出合并冲突需要人工手动决策。举个简单例子main 分支里index.html第 5 行写的是h1Hello/h1feature 分支里index.html第 5 行改成了h1你好/h1合并时 Git 不知道该留哪个版本就会产生冲突2. 冲突文件长什么样合并时如果出现冲突终端会提示Automatic merge failed; fix conflicts and then commit the result.打开冲突的文件会看到 Git 自动插入的冲突标记 HEAD h1Hello/h1 h1你好/h1 feature/login HEAD到当前分支你所在的主分支的内容到 feature/login要合并的分支的内容3. 可视化解决冲突VS Code现在主流编辑器都支持可视化冲突解决以 VS Code 为例打开冲突文件后会看到快捷操作选项四个选项对应四种处理方式Accept Current Change保留当前分支的内容丢弃要合并分支的改动Accept Incoming Change保留要合并分支的内容覆盖当前分支Accept Both Changes两个版本的内容都保留Compare Changes并排对比两个版本的差异选择对应的选项或者手动编辑代码删掉所有冲突标记保留最终正确的内容即可。4. 完成冲突解决编辑保存文件后执行以下命令完成合并# 将解决完冲突的文件重新加入暂存区gitadd冲突的文件名# 提交合并结果gitcommit-mfix: 解决登录页面文案合并冲突至此冲突就彻底解决了。5. 减少冲突的小技巧功能分支粒度要小不要一个分支开发十几天再合并每天开工前从 main 拉取最新代码git pull origin main保持分支同步多人协作时尽量避免同时修改同一个文件的同一区域提前沟通分工减少交叉修改五、分支最佳实践与常用命令速查1. 分支命名规范功能开发feature/功能名称如feature/user-centerBug 修复fix/问题描述如fix/login-404-error线上热修复hotfix/问题描述如hotfix/payment-fail文档更新docs/更新内容如docs/api-doc-update2. 常用分支命令速查表命令功能说明git branch查看所有本地分支git branch 分支名创建新分支git checkout 分支名切换到指定分支git checkout -b 分支名创建并切换到新分支git merge 分支名将指定分支合并到当前分支git branch -d 分支名删除已合并的分支git branch -D 分支名强制删除分支git branch -r查看所有远程分支git push origin --delete 分支名删除远程分支总结分支操作的核心逻辑非常简单从主干切出分支 → 分支内独立开发 → 完成后合并回主干。新手最容易踩坑的地方是搞混「在哪个分支执行 merge」记住一个原则就行要合并到哪个分支就先切换到哪个分支。掌握分支和 PR 流程你就具备了团队协作的基础能力。刚开始可能会觉得命令多记不住多操作几次自然就熟练了。