Git:新建功能分支并解决 Merge 冲突

最近在给自己的博客项目增加 中英文切换(i18n)功能,顺便走一遍从新建功能分支 -> 开发提交 -> 合并回主分支 -> 解决冲突 -> 推送远端。

一、新建功能分支(feature/i18n)

在新建分支之前,我先确保主分支是最新的:

css 复制代码
git checkout main
git pull

然后创建并切换到功能分支:

bash 复制代码
git checkout -b feature/i18n

分支并不是拷贝文件,而是一条独立的时间线。

接下来,所有和 i18n 相关的开发都会在这个分支上完成。

二、在新分支人为添加冲突

lua 复制代码
-- main分支/xxx.vue
console.log('main分支')

-- feature/i18n分支/xxx.vue
console.log('feature/i18n分支')

三、在功能分支上开发并提交

feature/i18n 分支上完成阶段性开发后,我进行了正常的提交:

sql 复制代码
git add .
git commit -m "feat: add basic i18n support"

第一次把这个分支推到远端时,需要加上 -u

bash 复制代码
git push -u origin feature/i18n

这样可以建立本地分支和远端分支的追踪关系,之后只需要:

perl 复制代码
git push

四、合并回 main 分支,遇到冲突

功能完成后,我准备把代码合并回 main

bash 复制代码
git checkout main
git pull
git merge feature/i18n

这时 Git 提示出现冲突,例如:

css 复制代码
CONFLICT (content): Merge conflict in xxx.vue

五、解决冲突的步骤

  1. 打开冲突文件
  2. 理解两个分支代码的差异
  3. 保留正确的逻辑
  4. 保存文件

然后执行:

csharp 复制代码
git add .

这一步非常关键,它的含义是:

告诉 Git:这些冲突我已经手动解决完了

六、完成 merge commit(一个容易踩坑的点)

解决冲突后,我执行了:

sql 复制代码
git commit

这时 Git 打开了编辑器(Vim),让我确认提交信息。

后来我才明白,在 merge 冲突场景下,更推荐直接使用:

sql 复制代码
git commit --no-edit

它的含义是:

直接使用 Git 自动生成的 merge 提交信息,不打开编辑器

这一步完成后,merge commit 只存在于本地 main 分支

七、提交到远程分支

perl 复制代码
git push

只有执行了 git push

  • merge commit 才会出现在远端
  • GitHub 上的 main 分支才会更新
  • 功能才算真正合并完成

八、总结

这次并没有用到多么高级的 Git 技巧,只是记录从 分支创建 → 功能开发 → 合并 → 冲突解决 → 推送远端

本次实践让我第一次把 Git 的分支开发和冲突处理流程真正串联起来。

把这些过程记录下来,一方面是对自己学习轨迹的梳理,另一方面也希望逐步积累技术表达的能力。

这篇文章算是一个起点,为后续系统性地撰写技术文章打下基础。

相关推荐
工藤孤独13 小时前
Git Worktree 从零到多智能体实战
git
微尘寒风1 天前
【Git】的安装和使用
java·git
胖大和尚1 天前
Git初始化本地文件夹,并推送到远端
git
啵啵啵12341 天前
Git 底层原理:分支为什么只是一个 41 字节的文件
git
demon75520031 天前
Git Worktree详解介绍
git·worktree
胖大和尚2 天前
当前仓库推送到同一台机器上的另一个文件夹
git
轮到我狗叫了3 天前
git - 版本控制工具 - 对应的常见命令 - 以及无需后续每次手动source conda
git
changxiang3 天前
GIT 备忘
git
DogDaoDao3 天前
Windows 开发提效工具全景指南:60+ 工具的工程化分层配置
windows·git·程序员·开发工具·powershell·everything·msys2
wdfk_prog3 天前
GitHub push 失败:如何扫描并清理 Git 历史中的大文件
git·elasticsearch·github