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