大多数情况下,合并的命令为:

git merge <commit>

commit:提交ID或代表他的引用(分支,标签,哈希值等)。

合并操作将<commit>对应的目录树和当前工作区目录树的内容进行合并,并生成一个新的提交,并以当前分支的提交作为第一父提交,<commit>作为第二父提交。同时该操作支持对多个<commit>和当前提交进行合并。

默认,合并成功后会自动对暂存区进行提交但也可以通过加入选项[--no-commit]使合并后的结果不自动提交,用户可以git ls-files 查看暂存区里合并后的结果,再手动提交。

当然,合并并非总是成功的。当要合并的两个提交对同一文件的同一区域同时进行了更改的话,提交就会失败。

我们可以通过查看暂存区git ls-files ,发现会有3个冲突文件,并分别标注有数字1、2、3。1代表冲突文件的原始版本,可用

$ git show :1:filename 查看内容;

2代表冲突文件的本地分支版本,可用

$ git show :2:filename 查看内容;

3代表冲突文件的被合并分支的版本,可用

$ git show :3:filename 查看内容;

我们有两种方法解决冲突:

1.手动编辑冲突文件。

step 1: 在工作区手动编辑冲突文件。打开文件后会发现git 已经通过

<<<<<<<  HEAD

本地分支内容

=======

外地分支内容 

>>>>>>>  哈希值

标注了文件中发生冲突的地方,你只要选择一个内容或改变他们,按你所想编辑完文件就好。

step 2: git add filename

step 3: git commit

2.通过git mergetool 命令图形化编辑以解决了冲突后再进行合并。