GitHub工程git merge出现冲突处理方式
- [1. 源由](#1. 源由)
- [2. 冲突解决](#2. 冲突解决)
-
- [2.1 触发合并冲突](#2.1 触发合并冲突)
- [2.2 查看冲突状态](#2.2 查看冲突状态)
- [2.3 打开冲突文件](#2.3 打开冲突文件)
- [2.4 解决冲突](#2.4 解决冲突)
- [2.5 标记冲突已解决](#2.5 标记冲突已解决)
- [2.6 继续合并](#2.6 继续合并)
- [2.7 检查合并结果](#2.7 检查合并结果)
- [3. 示例](#3. 示例)
1. 源由
在产品研发中,常见的技术动作就是merge
,而这个操作通常有两种场景:
- 【产品开发】根据PR内容,分析代码,解决冲突;
- 【版本管理】根据冲突类型:a) 简单合并,合入版本;b) 复杂合并,提交backport issue
不管选择何种流程,最终技术层面的操作是一样的。
2. 冲突解决
在使用 Git 进行分支合并时,可能会遇到合并冲突。合并冲突通常发生在两个分支都修改了同一个文件的同一个部分,Git 无法自动决定应该保留哪一部分的修改。这时需要手动解决冲突。以下是处理 Git 合并冲突的步骤:
2.1 触发合并冲突
bash
$ git merge <branch-name>
例如:
bash
$ git merge feature-branch
2.2 查看冲突状态
合并过程中如果遇到冲突,Git 会提示你冲突文件。可以使用以下命令查看冲突文件:
bash
$ git status
2.3 打开冲突文件
在冲突文件中,你会看到类似这样的标记:
plaintext
<<<<<<< HEAD
当前分支的代码
=======
目标分支的代码
>>>>>>> branch-name
你需要手动编辑这些文件,选择保留的代码,或者合并两者的代码。
2.4 解决冲突
手动编辑文件,删除冲突标记 <<<<<<<
, =======
, 和 >>>>>>>
,并保留正确的代码。
2.5 标记冲突已解决
在解决完所有冲突并保存文件后,需要告诉 Git 冲突已经解决:
bash
$ git add <file-name>
例如:
bash
$ git add conflicted-file.txt
2.6 继续合并
所有冲突解决并 git add
后,完成合并:
bash
$ git commit
有时 Git 会自动生成一个合并消息,你只需保存并退出编辑器。
2.7 检查合并结果
确保一切正常,可以使用:
bash
$ git log
确认合并完成。
3. 示例
假设在合并 feature-branch
到 main
分支时遇到冲突:
bash
# 切换到 main 分支
$ git checkout main
# 合并 feature-branch 到 main
$ git merge feature-branch
# 这里可能会看到冲突提示
# 查看冲突状态
$ git status
# 打开冲突文件并手动解决冲突
$ nano conflicted-file.txt
# 标记冲突已解决
$ git add conflicted-file.txt
# 完成合并
$ git commit
通过以上步骤,你可以有效地解决 Git 合并冲突。