git学习,合并分支

在实习这,在使用github时,他们都是每个协作者一个分支,然后由一个管理员,合并代码到主分支。想当年我们都是都在主分支上造。真是太粗鲁了。
第一阶段:发起合并(创建 Pull Request)
这是合并的标准入口,哪怕你打算用命令行解决冲突,也建议先开个 PR 方便追踪。
-
打开仓库,点击 Pull requests 标签 -> 点击绿色的 New pull request。
-
选择分支:
-
base:选
main(你要合进去的目标)。 -
compare:选
feature/login(你的开发分支)。
-
-
点击 Create pull request,填写标题和描述后再次点击创建。
第二阶段:遭遇冲突(最常见的情况)
创建 PR 后,如果页面出现红底白字的提示:
“This branch has conflicts that must be resolved”
这说明你和同事同时改了同一个文件的同一块代码。此时,绿色的 Merge 按钮是灰色不可点的,必须解决冲突。
第三阶段:解决冲突(核心)
解决冲突主要有两种途径,你可以根据冲突的复杂程度来选择:
途径一:在 GitHub 网页上直接解决(适合小改动、冲突少)
-
在 PR 页面,点击冲突提示框右侧的 Resolve conflicts 按钮。
-
你会进入在线编辑器,冲突代码会被特殊符号标出来:
<<<<<<< feature/login (你的改动) const API_URL = 'https://api.dev.com'; ======= const API_URL = 'https://api.prod.com'; >>>>>>> main (主分支的改动) -
动手“裁决”:你要手动删掉所有的
<<<<<<<、=======、>>>>>>>这些标记,并决定最终留哪一行。-
如果想用主分支的,就删掉你的那行和标记,只留主分支的。
-
如果想用你自己的,就删掉主分支和标记。
-
如果两边都要(比如引入新的 import 且保留旧的),就把它们按正确顺序拼在一起,删掉所有标记。
-
-
修完这个文件后,点击右上角的 Mark as resolved。
-
所有文件都标记完后,点击绿色的 Commit merge,冲突就解决了,PR 会重新变为可合并状态。
途径二:用命令行 + 本地编辑器解决(推荐,适合复杂冲突)
当冲突文件很多,或者在网页上改容易出错时,强烈建议在本地 IDE(如 VS Code)里操作,因为 IDE 会用图形化按钮帮你一键选择。
步骤 1:拉取最新代码到本地
打开终端,切换到主分支并拉取最新更新:
git checkout main
git pull origin main
步骤 2:切换到你的开发分支,合并主分支
git checkout feature/login
git merge main
此时终端会提示:Auto-merging ... CONFLICT (content),说明冲突了。
步骤 3:在 VS Code 或 IDE 中解决冲突
打开提示冲突的文件(比如 src/config.js)。
在 VS Code 中,冲突区域会有醒目的高亮,并给你三个按钮:
-
Accept Current Change(保留
HEAD,即你的代码) -
Accept Incoming Change(保留主分支的代码)
-
Accept Both Changes(两个都保留)
你只需点点按钮,然后删除那些 <<<<<<< 和 >>>>>>> 的分隔线即可。把文件改到你满意的状态后保存。
步骤 4:标记冲突已解决并提交
在终端依次执行以下命令:
# 将修改好的文件标记为已解决
git add .
# 提交这次合并操作(注意:这里会弹出一个合并提交的编辑窗口,直接保存退出即可)
git commit -m "merge: 解决 feature/login 与 main 的配置冲突"
# 将解决完冲突后的分支推送到远程仓库
git push origin feature/login
步骤 5:返回 GitHub PR 页面
刷新 PR 页面,你会发现红色的冲突警告消失了,绿色的 Merge pull request 按钮已经可以点击了!
第四阶段:最终合并(收尾)
无论你用上述哪种方式解决了冲突,最终回到 PR 页面底部:
-
点击绿色的 Merge pull request 按钮。
-
下拉小三角,选择合并方式(推荐选 Squash and merge 保持主分支整洁,或默认的 Create a merge commit)。
-
点击 Confirm merge。
-
(可选)点击紫色的 Delete branch 删除已经完成使命的开发分支。
浙公网安备 33010602011771号