冲突解决:

先尝试制造冲突:

首先我:git checkout -b mzy

创建一个mzy的分支

然后在其中修改readme.txt文件,随便加上一点东西。

vim readme.txt   write... wq

然后:

git add readme.txt
git commit -m "mzy分支上修改"

这时我的master分支还是指向上一个版本的,但是我的mzy分支已经迭代了一个版本了。

但是现在如果切换回master分支,并且使用git merge mzy,这时因为master和mzy仍然

只是简单的前后相邻的两个单线性版本,所以直接merge不会有任何问题。


但是我现在要做的是制造冲突!

所以我先git checkout master,首先切换到了master分支

我又vim readme.txt,把其中的内容随便修改了一下。

然后在master分支上:

git add readme.txt
git commit -m "在master主分支上修改提交readme.txt"

现在关系就复杂了,就不是简单的线性关系了,而是有了分叉。

现在再次,在master主分支上试图合并mzy分支:
git merge mzy,发现:

$ git merge mzy
Auto-merging readme.txt
CONFLICT (content): Merge conflict in readme.txt
Automatic merge failed; fix conflicts and then commit the result.

告诉我们,当前分支和我们要合并的mzy分支有冲突,必须手动合并,自动合并失败了!
git status,查看当前git的状态

$ git status
On branch master
You have unmerged paths.
(fix conflicts and run "git commit")
(use "git merge --abort" to abort the merge) Unmerged paths:
(use "git add <file>..." to mark resolution) both modified: readme.txt no changes added to commit (use "git add" and/or "git commit -a")

发现现在提示,在我们尝试合并master分支和mzy分支的时候,因为其中对相同的readme.txt文件有修改所以不能自动合并

提示有unmerged paths,让我们手动去解决它。


然后我们打开 readme.txt,发现其中有:

git 是一个好工具,就是门槛比较高。

<<<<<<< HEAD

这是我在master上add,commit的内容

=======

这是我在mzy上add,commit的内容

>>>>>>> mzy

可以看出git在这种无法自动处理的冲突上,使用了
<<<<<<<

=======

>>>>>>>

进行标识

<<<<<<<HEAD:固定的表示当前HEAD指向的,不一定是master。

=======:用于冲突之间分隔

>>>>>>>:被合并分支名称

内容一定是当前分支在HEAD下,被合并分支在后面。

手动修改这些文件,去掉其中的分隔符号,并且把内容修改成你想要的样子,
再次 git add readme.txt,git commit -m "合并分支mzy,并且解决了冲突"

但是要注意,只有当前分支会产生修改,被合并的分支是不会发生改变的!

现在提示:[master 3b15b8e] conflict fixed 合并成功!


我们可以让日志显示格式改一改,看到其中的合并步骤:
git log --graph --pretty=oneline --abbrev-commit
<

或者直接使用简单的:git log --graph[这样会显示很长]

或者:git log --graph --pretty=oneline

[这样会把全部显示commitId,没有reflog那种简洁]

最好的还是:
git log    --graph      --pretty=oneline   --abbrev-commit

查看日志  分支合并图    一行显示       缩减commitId的长度

>

$ git log --graph --pretty=oneline --abbrev-commit
* 3b15b8e (HEAD -> master) conflict fixed
|\
| * dbee345 (mzy) AND simple
* | b1d6af5 在主分支上进行提交
|/
* fd4ceae 修改了readme.txt文件
* c5687b8 删除test.txt[C
* b71048d 提交test.txt
* 88726c9 提交了readme.txt中的修改
* e4deff9 git change readme.txt add tracks change of files
* 9a3670d add LICENSE to res
* c3e7dc7 加上了GPL
* c17e52f 加上了一些新玩意儿distributed
* 9f6ffb9 第一次提交readme.txt

finish, 冲突解决!

问:

是不是如果没有 git merge mzy,那么status就不会显示冲突?

是的,如果你的分支都在各自工作,没有merge,就算相同的文件中都各自有修改,git status都是不会提醒的,

只有你合并的时候,才会出现冲突,各个分支其实是互不干扰的!

如果,是修改的两个不同的文件还会有冲突吗?但是应该还是有分支的吧?不是线性的?

不会有冲突,是的,还是发散出了分支的,但是不会冲突了,因为修改的是不同的文件!

当我们在master上进行merge分支的时候:

$ git merge mzy

Already up to date.(已经是最新的了。)

直接就提示成功了!

mzy git学习,分支冲突,以及冲突解决(五)的更多相关文章

  1. mzy git学习,分支以及分支合并(四)

    git 鼓励大量使用分支:最后进行master和分支之间的合并 git branch git branch 查看当前有多少分支,并且将当前在使用的分支用*标注出来. [一定要注意git的分支有从属概念 ...

  2. mzy git学习,git推送到远程库(八)

    git在同步到远程库 关于git中多个用户切换的事情: 完全使用账户密码策略连接远程库: 之前一直尝试在本地切换多个用户,发现一直不行,很奇怪?后面发现必须要去win10的凭据管理器删除当前git的凭 ...

  3. 139.00.005 Git学习-分支管理

    @(139 - Environment Settings | 环境配置) 一.Why? 分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交, ...

  4. mzy git学习,初识git(一)

    GIT学习 git工作区.暂存区.本地库.远程库 工作区:实际上我们工作的地方,进行写代码或者文件的地方. 暂存区:我们执行了git add 操作之后,就会被提交到暂存区. 本地库:其实最后我们需要执 ...

  5. 【学习总结】Git学习-参考廖雪峰老师教程五-远程仓库

    学习总结之Git学习-总 目录: 一.Git简介 二.安装Git 三.创建版本库 四.时光机穿梭 五.远程仓库 六.分支管理 七.标签管理 八.使用GitHub 九.使用码云 十.自定义Git 期末总 ...

  6. Git合并分支出现的冲突解决

    人生不如意之事十有八九,合并分支往往也不是一帆风顺的. 我们准备新的分支newbranch. LV@LV-PC MINGW32 /c/gitskill (master)$ git checkout - ...

  7. mzy git学习, 保留现场,恢复现场,以及bug分支处理(七)

    git stash 在git中有时候我们工作做了一半,但是有点急事需要离开一段时间,或者现在需要切换到另一个分支下,去维护和修改一些其它的东西,但是我们现在的工作还没有完成,提交上去的话,并不是完整的 ...

  8. mzy git学习,git协同开发忽略文档配置以及一些杂点(九)

    回忆一个电脑多账户问题 之前也说了,如果使用ssh登陆的话,一个电脑就只能登陆一个账号了,不像通过凭据可以切换(但是其实也可以每次去生成新的公钥和私钥,只要你不嫌麻烦) 再次补充: ssh-keyge ...

  9. mzy git学习,禁用Fast forward的普通合并(六)

    git merge --no-ff -m "msg" x-branch:禁用Fast forward的普通合并 通常,合并分支时,如果可能,Git会用Fast forward模式, ...

随机推荐

  1. 手把手教你用java实现二分查找树及其相关操作

    二分查找树(Binary Search Tree)的基本操作有搜索.求最大值.求最小值.求前继.求后继.插入及删除. 对二分查找树的进行基本操作所花费的时间与树的高度成比例.例如有n个节点的完全二叉树 ...

  2. Linux CentOS 7 安装配置vsftp

    学习Linux时间不长,首次安装了vsftp,按照网上的各种帖子尝试配置,不过都没打到预期,不是被拒绝连接,就是连接超时,总之就是各种问题啊.当然了,不是别人配置的不对,而是自己不是太懂Linux,选 ...

  3. ASM入网小助手卸载

    目录 ASM小助手卸载 写在前的 卸载 解除U盘禁用 写在后的 ASM小助手卸载 写在前的 有些公司内网的上网认证是用的ASM小助手,不过有时候用自己电脑接入公司内网可能会主动下载到ASM入网小助手的 ...

  4. Python 数值中的下划线是怎么回事?

    花下猫语:Python 中下划线的用法令人叹为观止,相信你已在各种文章或教程中见识过了.在 2016 年的 3.6 版本之后,Python 还引入了一种新的语法,使得下划线也可以出现在数值中.这篇翻译 ...

  5. 我眼中的java线程池实现原理

    最近在看java线程池实现方面的源码,在此做个小结,因为网上关于线程池源码分析的博客挺多的,我也不打算重复造轮子啦,仅仅用纯语言描述的方式做做总结啦! 个人认为要想理解清楚java线程池实现原理,明白 ...

  6. OpenCV 之 特征检测

    特征,也称 兴趣点 或 关键点,如下:蓝框内区域平坦,无特征:黑框内有"边缘",红框内有"角点",后二者都可视为"特征" 角点作为一种特征, ...

  7. 3分钟搭建一个网站?腾讯云Serverless开发体验

    作为一个开发者,应该都能理解一个网站从开发到上线,要经过很多繁琐的步骤. 编写代码,部署应用,部署数据库,申请域名,申请SSL证书,域名备案,到最终上线起码要几天时间. 作为一个不精通代码的业务玩家, ...

  8. vue菜单切换

    HTML: <div id="box"> <ul> <li v-for= "(item,index) in arry"> & ...

  9. Ubuntu开启SSH端口并且搭建Vulhub环境

    1.下载好ubuntu.开启SSH: * sudo apt update * sudo apt install openssh-server * sudo systemctl status ssh 用 ...

  10. Burp - Turbo Intruder

    Turbo Intruder 基础使用总结,把Python代码都记录下,要是有啥骚姿势,求各位师傅交流. 个人感觉超强的一款Burp插件,反正超快 Link: https://github.com/P ...