来源:https://www.liuhaolin.com/git/115.html

git中合并冲突是在不同的分支中同一个文件的内容不同导致的,如果进行合并就会冲突。文件可能是新增的文件,比如在两个分支中都新建了同一个文件,但是他们的内容不同,或是在两个分支中都更新了同一个文件,但是更新的内容不同。最终导致同一文件在不同的分支中内容不同。如果需要进行合并,就必须人工解决冲突,或者撤销合并。

"创建一个有冲突的合并"

          git解决冲突示例

初始化一个仓库,然后创建一个 dev分支,分支里添加一个文件 master-dev.txt,然后提交到 dev分支。切换到 master分支,同样的操作也是提交了同一个文件master-dev.txt,同样提交到master 分支中,但是这两个文件的内容是不同的。如果想把 dev的分支提交到master中,代码就会有冲突。

创建“冲突”

echo "测试-代码提交冲突" > README
git init .
git add .
git commit -m 'init'
# 创建一个 dev 分支,并切换到dev分支
git checkout -b dev # 当前的分支 dev
git branch
#* dev
# master
echo "dev" > master-dev.txt # 在dev分支中提交
git commit -m '[dev branch ]add file master-dev.txt' git checkout master
echo "master" > master-dev.txt
git add .
git commit -m '[master branch ]add file master-dev.txt'

把dev分支的代码合并的master中,看看什么情况。

# 把 dev分支的代码合并到当前的分支,也就是 master 分支中
git merge dev #自动的合并文件 master-dev.txt
Auto-merging master-dev.txt # 提示了冲突, 合并冲突在 master-dev.txt
CONFLICT (add/add): Merge conflict in master-dev.txt # 自动合并失败, 修改一个冲突,然后提交结果
Automatic merge failed; fix conflicts and then commit the result.

  出现了冲突,这是时候 master-dev.txt 的内容会被修改,会把两个分支中的文件内容都 汇集 master-dev.txt 文件中。

cat master-dev.txt
<<<<<<< HEAD
master
=======
dev
>>>>>>> dev

  需要注意的地方是,产生了冲突,并且当前的文件 master-dev.txt被修改了。这个时候,只能是先解决冲突。再进行下一步操作。比如想看一下 dev分支中的文件 master-dev.txt 的内容是否也被修改了,这个时候看不了,因为要先解决冲突。事实上,出现冲突的时候,是不能切换分支的。这样有个好处就是,就是防止有问题的代码污染了其他的分支。

git checkout dev
master-dev.txt: needs merge
# 必须先解决当前的索引区的冲突
error: you need to resolve your current index first

解决代码合并中的冲突

  git使用 7个左键箭头 + 当前分支,7个等号和7个右箭头 + 当前分支 来表示冲突的代码,一共是三行。解决冲突就是修改代码后,并删除这三行。比如本次的修改就是删除这三行。

  

cat master-dev.txt
master
dev

  修改后看下当前的状态

git status
On branch master
# 存在没有合并成功的部分
You have unmerged paths.
# 修正错误,并提提交
(fix conflicts and run "git commit")
# 使用 git merge --about 终止合并
(use "git merge --abort" to abort the merge) # 没有合并的文件
Unmerged paths:
(use "git add <file>..." to mark resolution)
both added: master-dev.txt

  修改了冲突的文件,冲突并没有得到解决 ,因为文件并没有提交。没有继续合并,或者撤销合并。所以依然不能切换分支的。

git checkout dev
master-dev.txt: needs merge
error: you need to resolve your current index first

  这里进行提交一下看看结果。

git add master-dev.txt
git commit -m 'both commit' # 当前的分支是 master
cat master-dev.txt
master
dev # 切换到dev分支
cat master-dev.txt
dev
# 可以看到dev分支的内容换是原来的内容,并没有改变。

  这样就合并了有冲突的分支, 现在有一个问题,就是 dev分支的内容和 master分支的内容是不同的。如何同步能?

# 在dev分支中,更新master中的内容
git rebase master #First, rewinding head to replay your work on top of it...
#Fast-forwarded dev to master. # 这个表明,现在 dev分支的内容和master分支的内容是一致的。
cat master-dev.txt
master
dev

  

git分支学习笔记2-解决合并的冲突的更多相关文章

  1. git的学习笔记(二):git远程操作

    1.创建ssh key ssh-keygen -t rsa -C "your_email@example.com" 执行命令后会在用户的家目录生成.ssh的隐藏文件夹,文件夹里有公 ...

  2. [常用工具] git基础学习笔记

    git基础学习笔记,参考视频:1小时玩转 Git/Github 添加推送信息,-m= message git commit -m "添加注释" 查看状态 git status 显示 ...

  3. 【整理】解决vue不相关组件之间的数据传递----vuex的学习笔记,解决报错this.$store.commit is not a function

    解决vue不相关组件之间的数据传递----vuex的学习笔记,解决报错this.$store.commit is not a function https://www.cnblogs.com/jaso ...

  4. LevelDB 学习笔记2:合并

    LevelDB 学习笔记2:合并 部分图片来自 RocksDB 文档 Minor Compaction 将内存数据库刷到硬盘的过程称为 minor compaction 产出的 L0 层的 sstab ...

  5. git 学习笔记 --创建与合并分支

    在版本回退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支.截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支.HEAD严格来说不是指向提交,而 ...

  6. GIT 分支管理:创建与合并分支、解决合并冲突

    分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SVN. 如果两个平行宇宙互不干扰,那对现在的你也没啥影响.不过,在某个时间点,两个平行宇宙合并 ...

  7. Git分支(5/5) -- 解决合并的冲突

    如果两个分支上都对同一个文件进行了修改, 那么就有可能发生冲突. 首先创建一个分支, 并切换到该分支上: 然后修改index.html, 修改几个地方吧. 然后查看状态, 并commit: 然后切换到 ...

  8. Git-第五篇廖雪峰Git教程学习笔记(4)分支

    1.一开始,只有一个主分支(master),HEAD指向Master,而Master指向主分支.现在我们创建dev分支. lfy@lfy-PC MINGW64 /c/fyliu/lfyTemp/git ...

  9. HIT2019春软件构造->Git&Github学习笔记

    由于软件构造课程需要,学习使用git,以下作为学习笔记. 一.Git初始化及仓库创建和操作  1.基本信息设置(设置签名)  命令        项目级别/仓库级别:仅在当前本地库范围内有效 git ...

  10. git的学习笔记整理

    Git学习较好的网址:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001373 ...

随机推荐

  1. 我开源的H5商城2.0版本发布,强烈推荐

    简介 waynboot-mall 是一套全部开源的 H5 商城项目,包含运营后台.H5 商城前台和后端接口三个项目 .实现了一套完整的商城业务,有首页展示.商品分类.商品详情.sku 详情.商品搜索. ...

  2. NumPy 正态分布与 Seaborn 可视化指南

    正态分布(高斯分布) 简介 正态分布(也称为高斯分布)是一种非常重要的概率分布,它描述了许多自然和人为现象的数据分布情况.正态分布的形状呈钟形,其峰值位于平均值处,两侧对称下降. 特征 正态分布可以用 ...

  3. Fastapi获取其他第三方回调

    flask.django获取第三方回调数据,可以用request.data直接获取全部参数.而很多同学不知道fastapi如何获取回调的全部参数,其实可以通过request.body(). 如: @p ...

  4. Maven项目中整合SSH(pom.xml文件的配置详解)

    Maven项目中整合SSH比较繁琐,需要解决版本冲突问题,博主在下面给出了pom.xml文件的配置信息,改配置文件整合的是:struts2-2.3.24.spring4.2.4.hibernate5. ...

  5. 什么是Token?为什么大模型要计算Token数

    本文分享自华为云社区<[技术分享]什么是Token?为什么GPT基于Token定价>,作者:开天aPaaS小助手Tracy. 在使用LLM大模型时,我们经常会遇到一个关键词,叫:Token ...

  6. 如何更加优雅的使用 SSH 进行登录

    引言 我们在日常的开发过程中,很多时候需要连接服务器查看日志或者在服务器上调试代码.但是,使用 ssh 命令登录服务器每次都需要输出密码,就比较繁琐.因此我们可以使用 sshpass 通过参数指定密码 ...

  7. linux服务器下安装cbc和ipopt求解器【踩坑总结】

    安装CBC求解器 CBC求解器是一个C++库,我们可以通过以下命令在Linux系统中进行安装: sudo apt-get install coinor-cbc 对于Windows操作系统,可以从CBC ...

  8. opencv-python 实现鱼眼矫正 棋盘矫正法

    .htmledit_views address, .htmledit_views cite, .htmledit_views dfn, .htmledit_views em, .htmledit_vi ...

  9. docker——存储配置与管理

    docker存储配置与管理 查看docker info [root@hmm overlay2]# docker info Client: Docker Engine - Community Versi ...

  10. c# .net mvc 使用百度Ueditor富文本框上传文件(图片,视频等)

    使用背景: 项目中需要用的富文本框去上传视频,图片的话大部分都是可以的.相对来说,国外的富文本框很成熟.但鉴于文档是英语,这里使用了百度的富文本框. 采用的api的方式,调用接口进行上传文件.话不多说 ...