介绍
git merge
用于将其他的分支与当前的分支进行合并,在开发过程中通常使用此命令来合入最新修改的代码,或者是使用含有git merge
功能的git pull
来获取最新版本的代码。
基本用法
当前有一个test-feature
的feature分支,并从test-feature
分支中拉取test-feature-dev
开发分支,在test-feature-dev
中进行开发后将开发后的代码合并到test-feature
中
# 将test-feature-dev的代码合并到test-feature中git switch test-feature # 切换到test-feature分支git merge test-feature-dev # 合并开发分支
开发过程中发现test-feature
中存在问题,拉feature-fix
分支进行修复
修复问题后合并到test-feature
中:
git switch test-feature git merge test-feature-fix # 合并修复分支,修复问题
此时再将test-feature-dev
合并到test-feature
,会出现Merge branch
的提交记录
合并冲突
冲突处理
在上面的案例中,将test-feature-fix
合并到test-feature
之后,此时test-feature
和test-feature-dev
由于对文件的同一行都进行了修改,此时将test-feature-dev合并,就会出现冲突,出现冲突后我们需要先对冲突部分的代码进行处理后才能进行合并
处理冲突后,使用git merge --contiue
完成合并并提交
git merge --contiue# 继续合并
冲突在未处理好时不可以继续合并,此时继续合并会报错:Exiting because of an unresolved conflict.
合并撤回
如果在冲突之后希望撤回此次合并,则可以使用git merge --abort
来撤回合并,合并撤回之后,分支会恢复到合并前的状态
# 撤回合并git merge --abort
总结
git merge <branch-name>
可以指定一个分支合并到当前的分支,指定的分支可以是本地的其他分支,也可以是已经fetch
至本地仓库的远程分支- 当被合并的分支中不包含当前分支的最近一次commit时,两个分支合并后,会在当前分支产生一个新的commit作为合并的提交记录,在Git graph中会表现为两个提交点汇聚成同一个提交点。
- 两个分支如果对同一个文件的相同行都进行了修改时,那么在合并时会出现合并冲突,此时必须要先解决冲突之后才能通过
git merge --continue
继续进行合并,或者也可以使用git merge --abort
撤回之前的合并。