一文详解git分支和合并冲突如何解决

 

 git合并常见命令

 

合并分支

在一个分支更改文件并commit,切换分支后文件并不会在另一个分支改变,所以需要合并分支

 

 

将hot-fix分支的内容合并到master

冲突产生的原因:

合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git无法替我们决定使用哪一个。必须人为决定新代码内容。

  1. 在master分支修改aaa.txt,并执行git add .和git commit

 

  1. 在hot-fix分支修改aaa.txt,并执行git add .和git commit

 

  1. 切换到master分支,合并hot-fix分支

 

 

报错冲突,自动合并失败,状态发生变化(master|MERGING)

  1. 查看状态(检测到有文件有两处修改both modified)需要手动合并代码

 

 

  1. 进入vim编辑器 vim 文件名

显示当前文件中的所有内容

 

 

<<<HEAD和====之间的内容是当前分支的修改内容

====和>>>>>>之间的内容是hot-fix修改的内容

  1. 按下键盘 i 键进入编辑模式,保留下想要保留的内容,将不需要的内容和特殊字符删去

 

 

  1. 按下键盘esc键,然后按下输入 :wq 保存并退出
  2. 将人为修改的冲突代码提交到暂存区并commit

注意commit的时候不能带文件名

 

 

  1. 查看文件内容

 

 

 

 

注意:合并的话必须开始版本一样。去看下log就明白了

当然,我们在项目中遇到的冲突不会这么简单,以uniapp微信小程序项目举例,我们在运行项目时会生成unpackage文件目录,这个时候提交总是提交一堆编译后的文件,甚至造成冲突。

这时我们需要在项目根目录下创建.gitignore文件,并配置如下:

  1. # 忽略 uni_modules 目录
  2. /uni_modules
  3. /unpackage/dist

 注意:这里的/dist不能少

然后git bash

为了避免.gitignore文件忽略不掉unpackage文件,我们要先清除缓存,然后执行add和commit

  1. git rm -r --cached unpackage
  2. git add .
  3. git commit -m "update .gitignore"
  4. git push origin dev

最后进行分支合并,解决冲突,合并成功。

posted @ 2024-07-11 22:00  海_纳百川  阅读(249)  评论(0编辑  收藏  举报
本站总访问量