一文详解git分支和合并冲突如何解决
git合并常见命令
合并分支
在一个分支更改文件并commit,切换分支后文件并不会在另一个分支改变,所以需要合并分支
将hot-fix分支的内容合并到master
冲突产生的原因:
合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git无法替我们决定使用哪一个。必须人为决定新代码内容。
- 在master分支修改aaa.txt,并执行git add .和git commit
- 在hot-fix分支修改aaa.txt,并执行git add .和git commit
- 切换到master分支,合并hot-fix分支
报错冲突,自动合并失败,状态发生变化(master|MERGING)
- 查看状态(检测到有文件有两处修改both modified)需要手动合并代码
- 进入vim编辑器
vim 文件名
显示当前文件中的所有内容
<<<HEAD和====之间的内容是当前分支的修改内容
====和>>>>>>之间的内容是hot-fix修改的内容
- 按下键盘 i 键进入编辑模式,保留下想要保留的内容,将不需要的内容和特殊字符删去
- 按下键盘esc键,然后按下输入 :wq 保存并退出
- 将人为修改的冲突代码提交到暂存区并commit
注意commit的时候不能带文件名
- 查看文件内容
注意:合并的话必须开始版本一样。去看下log就明白了
当然,我们在项目中遇到的冲突不会这么简单,以uniapp微信小程序项目举例,我们在运行项目时会生成unpackage文件目录,这个时候提交总是提交一堆编译后的文件,甚至造成冲突。
这时我们需要在项目根目录下创建.gitignore文件,并配置如下:
-
# 忽略 uni_modules 目录
-
/uni_modules
-
/unpackage/dist
注意:这里的/dist不能少
然后git bash
为了避免.gitignore文件忽略不掉unpackage文件,我们要先清除缓存,然后执行add和commit
-
git rm -r --cached unpackage
-
git add .
-
git commit -m "update .gitignore"
-
git push origin dev
最后进行分支合并,解决冲突,合并成功。
本文来自博客园,作者:海_纳百川,转载请注明原文链接:https://www.cnblogs.com/chentiao/p/18297264,如有侵权联系删除