git学习,合并分支

image

在实习这,在使用github时,他们都是每个协作者一个分支,然后由一个管理员,合并代码到主分支。想当年我们都是都在主分支上造。真是太粗鲁了。

第一阶段:发起合并(创建 Pull Request)

这是合并的标准入口,哪怕你打算用命令行解决冲突,也建议先开个 PR 方便追踪。

  1. 打开仓库,点击 Pull requests 标签 -> 点击绿色的 New pull request

  2. 选择分支

    • base:选 main(你要合进去的目标)。

    • compare:选 feature/login(你的开发分支)。

  3. 点击 Create pull request,填写标题和描述后再次点击创建。


第二阶段:遭遇冲突(最常见的情况)

创建 PR 后,如果页面出现红底白字的提示:

“This branch has conflicts that must be resolved”

这说明你和同事同时改了同一个文件的同一块代码。此时,绿色的 Merge 按钮是灰色不可点的,必须解决冲突。


第三阶段:解决冲突(核心)

解决冲突主要有两种途径,你可以根据冲突的复杂程度来选择:

途径一:在 GitHub 网页上直接解决(适合小改动、冲突少)

  1. 在 PR 页面,点击冲突提示框右侧的 Resolve conflicts 按钮。

  2. 你会进入在线编辑器,冲突代码会被特殊符号标出来:

    text
    <<<<<<< feature/login  (你的改动)
    const API_URL = 'https://api.dev.com';
    =======
    const API_URL = 'https://api.prod.com';
    >>>>>>> main           (主分支的改动)
  3. 动手“裁决”:你要手动删掉所有的 <<<<<<<=======>>>>>>> 这些标记,并决定最终留哪一行。

    • 如果想用主分支的,就删掉你的那行和标记,只留主分支的。

    • 如果想用你自己的,就删掉主分支和标记。

    • 如果两边都要(比如引入新的 import 且保留旧的),就把它们按正确顺序拼在一起,删掉所有标记。

  4. 修完这个文件后,点击右上角的 Mark as resolved

  5. 所有文件都标记完后,点击绿色的 Commit merge,冲突就解决了,PR 会重新变为可合并状态。


途径二:用命令行 + 本地编辑器解决(推荐,适合复杂冲突)

当冲突文件很多,或者在网页上改容易出错时,强烈建议在本地 IDE(如 VS Code)里操作,因为 IDE 会用图形化按钮帮你一键选择。

步骤 1:拉取最新代码到本地
打开终端,切换到主分支并拉取最新更新:

bash
git checkout main
git pull origin main

步骤 2:切换到你的开发分支,合并主分支

bash
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:标记冲突已解决并提交
在终端依次执行以下命令:

bash
# 将修改好的文件标记为已解决
git add .

# 提交这次合并操作(注意:这里会弹出一个合并提交的编辑窗口,直接保存退出即可)
git commit -m "merge: 解决 feature/login 与 main 的配置冲突"

# 将解决完冲突后的分支推送到远程仓库
git push origin feature/login

步骤 5:返回 GitHub PR 页面
刷新 PR 页面,你会发现红色的冲突警告消失了,绿色的 Merge pull request 按钮已经可以点击了!


第四阶段:最终合并(收尾)

无论你用上述哪种方式解决了冲突,最终回到 PR 页面底部:

  1. 点击绿色的 Merge pull request 按钮。

  2. 下拉小三角,选择合并方式(推荐选 Squash and merge 保持主分支整洁,或默认的 Create a merge commit)。

  3. 点击 Confirm merge

  4. (可选)点击紫色的 Delete branch 删除已经完成使命的开发分支。

posted @ 2026-08-10 08:43  雨花阁  阅读(25)  评论(0)    收藏  举报