来源: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. 智能便捷_AIRIOT智慧充电桩管理解决方案

    现如今随着对可持续交通的需求不断增加,电动车市场正在迅速扩大,建设更多更智能的充电桩,并通过管理平台提高充电设施的可用性和效率成为一项重要任务.传统的充电桩管理平台在对充电设施进行管理过程中,存在如下 ...

  2. Spring 对于事务上的应用的详细说明

    1. Spring 对于事务上的应用的详细说明 @ 目录 1. Spring 对于事务上的应用的详细说明 每博一文案 2. 事务概述 3. 引入事务场景 3.1 第一步:准备数据库表 3.2 第二步: ...

  3. Java中CAS算法的集中体现:Atomic原子类库,你了解吗?

    一.写在开头 在前面的博文中我们学习了volatile关键字,知道了它可以保证有序性和可见性,但无法保障原子性,结局原子性问题推荐使用synchronized.Lock或者AtomicInteger: ...

  4. C# java 的 equals 与 == 的区别

    C# String a = "宜春"; String b = new String(new char[] { '宜', '春' }); String c = b; //注意这里是引 ...

  5. Android 13 - Media框架(23)- ACodecBufferChannel

    关注公众号免费阅读全文,进入音视频开发技术分享群! 这一节我们将了解 ACodecBufferChannel 上一节我们了解到input buffer 和 output buffer 是如何分配的了, ...

  6. ASP.NET Core、Winform、WPF 删除多余的Microsoft.CodeAnalysis语言资源文件

    摘要:ASP.NET Core 3.1网站生成项目时,输出文件夹多出很多Microsoft.CodeAnalysis的语言资源文件github issue 问题# ASP.NET Core3.1网站生 ...

  7. Android项目代码规范

    项目代码规范 Android Studio的代码Style检查和inspect Code功能已经很强大,规范只负责代码结构和文件结构 带?的内容为可选或团队内协商内容 核心目标 提高可维护性: MVV ...

  8. windows下载安装ipopt求解器 可用于pyomo调用

    方案一:采用官方编译的应用程序 官方对windows下有已经编译好的应用程序,只需要下载下来,并将ipopt的应用程序所在文件夹路径添加到系统全局环境变量就可以了.这样在利用pyomo或者其他建模工具 ...

  9. Qt下载、安装及环境搭建

    1  下载 刚开始去的官网下载,需要注册账号,而且还比较麻烦,后来找到了一个安装包的链接,直接下载就好了:http://mirrors.ustc.edu.cn/qtproject/archive/qt ...

  10. zookeeper:Unexpected exception, exiting abnormally ::java.io.EOFException

    转载请注明出处: 服务器中断,重启服务器在重启kafka服务时,遇到如下报错: 2024-06-05 13:52:56,251 [myid:] - ERROR [main:ZooKeeperServe ...