zoukankan      html  css  js  c++  java
  • eclipse 下的 merge 是如何实现的

    1 我从eclipse里面新建一个workspace
    2 新建一个分支
    3 再新建另外一个分支
    4 回到原分支, 修改某一行,比如a.txt的85行
    5 提交git add commit
    6 切换到新分支
    7 修改a.txt的85行(同一个文件同一行)
    8 提交git add commit
    9 切换到第一个分支
    10 git merge 新分支
    git bash提示merge conflict 然后eclipse自动显示冲突的车祸现场 然后修改之后 然后提交 就没有冲突了 然后提交git add commit
    然后本分支就正常了并且merge成功, 
    11 切换到第二个分支, 发现第二个分支任然是以前的样子 merge abc对abc是没有影响的 但对当前分支有影响.
    ---------------

    <<<<<<< HEAD
    border:1px solid red;
    background-color:Red;
    =======
    border:1px solid yellow;
    background-color:yellow;
    border-radius:5px;
    >>>>>>> abc

    这里面就有HEAD=当前分支
    abc代表被比较的分支

    ----

    有一个比较关键的一点就是, 当一个分支合并另一个分支之后, git add commit之后, 如果再次的merge另一个分支, 就不会有conflict,就是这么神奇啊。
    因为conflict process把两边的文件有冲突的地方放到了同一个地方, 并且用特殊的符号包围起来,无形之中吧同一行的东西抵消掉了,就没有冲突了

    什么情况下会有冲突呢,就是同一个行同一个文件都发生了改变且变化不同,于是产生了冲突, 
    比如,我现在分支a文件b的第三行发生改变, 此时如果其他分支不发生变化的话,那merge是成功的,
    但如果分支a文件b不发生改变, 但其他分支的文件b某一行发生了改变,那merge就会提示进入message的界面, 按wq!退出.

    <<<<<<< HEAD
    background-color:redddd;
    =======
    background-color:yellow;
    >>>>>>> abc

    所以conflict的定义是:当merge方和被merge方在同一行发生了改变, 且改变不同的时候才会冲突,如果改变是一样的呢,那冲突是没有的。比如上图,如果background-color的颜色都一样,那就是没有冲突的。

  • 相关阅读:
    vim does not map customized key?
    再说vundle: 完全vim字符编程的四个必须插件
    centos7 没有iptables服务 file or directory? 用secureCRT登录centos?
    php基础语法-函数等
    windows下vmware10.0 安装centos7
    fedora23的firefox不能播放优酷视频?
    linux如何隐藏和显示所有窗口?
    fedora23忘记root密码怎么办??
    mouse scrollings and zooming operations in linux & windows are opposite
    windows 杂项
  • 原文地址:https://www.cnblogs.com/qinqiu/p/5960255.html
Copyright © 2011-2022 走看看