合并分支,解决冲突

执行Git merge ,如果有冲突,就会出现如下格式:

<<<<<<< HEAD
这个位置的内容就是当前所在分支的内容
=======
这个位置的内容就是合并进来的分支的内容
>>>>>>> branchName

用下面的设置来改进冲突标记使其也显示(分支)共同祖先(感谢罗宾·斯托克和休·吉登斯): 
git config --global merge.conflictstyle diff3

设置显示共同祖先之前: 

设置了显示共同祖先之后: 
 
||||||| merged common ancestors下面的内容就是双方改动前的内容

双方改动少的情况下,这种方式还是能一目了然的看到改动情况的,但是一旦冲突复杂了,就需要动用工具了,Android Studio就自带了解决冲突的工具,以下是操作步骤

选中项目->右键->Git->Resolve Conflicts

会出现一个弹窗,显示了冲突的文件,选择某个文件后,点击Merge

会出现三个代码框

a、左边的Local Changes代表”当前“分支上的修改;
b、右边的Changes from Server代表“合并进来”的分支上的修改;
c、中间的Result代表经过处理后的最终内容;

左上角有一排按钮,分别介绍一下作用

  • 上下箭头:跳转到上(下)一个不同;
  •  这三个从左往右依次代表:比较左边和中间的内容,比较中间和右边的内容,比较左边和右边内容;
  • 这三个从左往右依次代表:接受两边没有冲突的改变,接受左边没有冲突的改变,接受右边没有冲突的改变,什么叫没有冲突的改变待会儿会解释;
  • 现在回头看内容区域,会看到四种颜色 
    • 红色区域:代表当前分支和合并分支都编辑过的内容,属于冲突;
    • 蓝色区域:代表被单方面编辑过的内容,属于改变;
    • 灰色区域:代表被删除的内容,属于改变;
    • 绿色区域:代表新增的内容,属于改变;
  • 通过之前所述我们可以知道,真正需要解决的冲突只有红色区域,其他高亮区域只是为了让我们再次确认改变的内容是否合理,如果对自己的代码有信心,那就不用管那些区域了,c步骤中的三个按钮就派上用场了,你可以按照自己的需求接受改变的代码,通常可以直接接受两边没有冲突的改变:

    • 接受后就变成上图了,现在我们需要解决冲突了,如果不记得自己的修改是什么,就可以关闭该工具,通过查找历史提交,比对历史代码来确认正确的代码;有的时候由于代码格式化的原因,你并没有改变代码的内容,但是格式化增加了一些空格,那么也会产生冲突,

android studio 中如何合并冲突(转)的更多相关文章

  1. Android Studio中有用的快捷键栏

    Android Studio中有用的快捷键栏#1 Ahraewi线移动 Alt + Shift +向上/向下❖Alt + Shift +向上/向下 或上下移动在所选位置的行. 删除行 CMD + B ...

  2. 在Android Studio中进行单元测试和UI测试

    本篇教程翻译自Google I/O 2015中关于测试的codelab,掌握科学上网的同学请点击这里阅读:Unit and UI Testing in Android Studio.能力有限,如有翻译 ...

  3. 浅谈Windows下SVN在Android Studio中的配置、基本使用及解除关联

    看到网上很多关于svn环境配置和关联Android-Studio的很多博文,发现很零散,想集大家所长整理一下: 在AndroidStudio中开发版本控制中,除了Git就是SVN,和Eclipse不同 ...

  4. android studio 中移除module和恢复module

    一.移除Android Studio中module 在Android Studio中想要删除某个module时,在Android Studio中选中module,右键发现没有delete,如图: An ...

  5. Android Studio中Button等控件的Text中字符串默认大写的解决方法

    初学Android的时候,在Android Studio中xml里面添加一个Button.EditText等控件后,它的Text总是会显示大写,即使你输入的字符串是小写也不行,控制字符串大小写的属性是 ...

  6. .Net程序员之不学Java做安卓开发:Android Studio中的即时调试窗口

    对学.Net的人来说,JAVA开发是一场噩梦. .net中的即时窗口,调试时直接在里面写代码,对程序中的各种方法/属性进行调用,很方便. Android Studio中找了好久,参考如下网址,也有类似 ...

  7. 如何将Eclipse中的项目迁移到Android Studio 中

    如何将Eclipse中的项目迁移到Android Studio 中 如果你之前有用Eclipse做过安卓开发,现在想要把Eclipse中的项目导入到Android Studio的环境中,那么首先要做的 ...

  8. Android开发的小技巧,在Android Studio中使用Designtime Layout Attributes

    在编写xml文件时,为了预览效果,经常会使用默认填上一些内容,比如TextView时,随便写上一个text <TextView ... android:text="Name:" ...

  9. 在android studio 中使用applicationid的问题

    现在我需要对项目app的某个功能做性能测试,主要测试耗电量的多少. 1.我想到的方式是,我需要在同一台手机测试,同一个应用,需要安装在手机两次,第二次安装不覆盖第一次的安装. 在android stu ...

随机推荐

  1. open-falcon监控Flume

    1.首先你需要知道flume的http监控端口是否启动 请参考博文 Flume的监控参数 即在 http://localhost:3000/metrics 可以访问到如下内容 2.在open-falc ...

  2. mysql建立外键表

    //user create table users(id int primary key auto_increment not null,username varchar(50) not null,u ...

  3. ios原生项目内嵌u3d工程

    本文一反常态,目标是把u3d工程以framewWork形式 内嵌原生IOS项目 1.xcode中新建Cocoa Touch FrameWork.取名u3dFrameWork 2.把u3d导出的xcod ...

  4. 为什么要用kafka、rabbit等消息队列

    1.解耦: 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束. 2.冗余: 消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险.许多消息队列所采用的&q ...

  5. webapi 统一处理时间格式

    public class UnixDateTimeConvertor : DateTimeConverterBase { public override object ReadJson(JsonRea ...

  6. Golang 笔记 5 go语句

     Go语句和通道类型是Go语言的并发编程理念的最终体现.与defer语句相同,go语句也可以携带一个表达式语句.Go语句的执行会很快结束,并不会对当前流程的进行造成阻塞或明显的延迟.一个简单的示例: ...

  7. 查询表DML和DDL操作的最后时间

    查询test表DML操作的最后时间的语句: select max(ora_rowscn),to_char(scn_to_timestamp(max(ora_rowscn)),'yyyy-mm-dd h ...

  8. nodejs & npm & gulp 安装和配置

    熟悉 Hellolily的过程中,了解了这个. 环境: ubuntu 14.04 LTS 64bit 源码安装方式: 下载最新源码:如果被和谐请自行想办法. 解压并编译安装: cd node-xxx ...

  9. 在node环境使用axios发送文件

    yarn add form-data (async () => { const l = console.log; const axios = require("axios") ...

  10. 好用的Quartz管理器类

    转发的代码,原理就不提了 下面直接上代码: QuartzManager.java 动态添加.修改和删除定时任务管理类 import org.quartz.CronScheduleBuilder; im ...