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

posted @ 2016-10-14 14:12  qqisnow2021  阅读(877)  评论(0编辑  收藏  举报