git rebase消除commit分叉

在很多时候,随着开发团队的扩容,大家提交代码一段时间过后,就产生很多的节点,对于有代码洁癖的人来说,这个总会觉得很不爽。

那么,merge是如何产生的呢?下面我挑一个常见的冲突的场景,示例一下:

用merge来解决冲突

我们来在模拟一次的情况,针对,首先,并提交到了git服务器上内容如下:

同时,,内容如下:

B用户只是在本地电脑上进行了,如下:

接下来,B用户使用命令将git服务器代码下载并合并到本地,可以看到产生了冲突:

接下来,B用户,修改有冲突的文件,解决冲突,如下:

修改后的文件内容如下:

现在B将代码提交到git服务器上,可以看到有两个commit(一个是B对首行代码的提交:,一个是B刚才的merge动作),如下:

可以看到,提交历史产生了分叉,接下来我们看看如何使用消除分叉:

git rebase消除分叉

A再次修改首行代码,并提交至git服务器,内容如下:

B再次在本地修改首行代码,并提交至本地,内容如下:

commit如下:

接下来,使用,可以看到冲突,并且进入了rebase状态:

此时,B在本地打开文件,可以看到冲突内容如下:

解决冲突:修改README.md文件,内容如下:

使用标注冲突已解决:

可以看到B用户第二次修改是在A修改之后,但是B的提交commit编号被新的编号所取代,commit的内容不变。

这是看到不一致。是因为B用户在本地的修改还未提交至git服务器,通过也可以看出来,有未提交至git服务器:

提交后,就OK了。如下:

现在我们登录到服务器看下最新的内容,如下:

可以通过项目网络图直观地看到,如下:

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180107G0H3C900?refer=cp_1026

相关快讯

扫码关注云+社区