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的颜色都一样,那就是没有冲突的。

  • 相关阅读:
    【面积并】 Atlantis
    【动态前k大 贪心】 Gone Fishing
    【复杂枚举】 library
    【双端队列bfs 网格图建图】拯救大兵瑞恩
    【奇偶传递关系 边带权】 奇偶游戏
    【权值并查集】 supermarket
    CF w4d3 A. Pythagorean Theorem II
    CF w4d2 C. Purification
    CF w4d2 B. Road Construction
    CF w4d2 A. Cakeminator
  • 原文地址:https://www.cnblogs.com/qinqiu/p/5960255.html
Copyright © 2011-2022 走看看