git 解冲突需要注意的问题

弄清除冲突双向的修改意图,并在解决冲突时,同时处理两边的意图。

举例说明

A.txt 文件,

在 master 分支上,有一行文字(代码)是这样:

这是一段在 master 分支上的文字。

Alice 在 dev 分支上,修改了这段文字(代码),修改后如下:

在 dev 上,将 master 的文字修改为这段文字;
并添加了其它文字;
如果是代码,这些代码相互关联。

Bob 基于 master 分支开发功能,在 f/feature 分支上,也修改了这段代码,如下:

在一个功能分支(f/feature)上修改 master 上的代码;
以及与之相关的其它内容。

现在,Bob 需要把 dev 分支的代码合并到 f/feature 分支上,git 命令:(@f/feature) git merge dev

将得到一个冲突。

如何解决这个冲突?

解冲突

解冲突推荐使用 GUI 工具,因为直观。这里介绍 tortoisegit 解冲突的操作。

(图1)操作入口:

(图2)冲突列表:

(图3)文件的解冲突页面

对于比较简单的冲突,直接应用某一边的修改,或者做一下简单的编辑(图3中,下面的区域是可以编辑的。)

对于复杂冲突,需要了解两边对同一段代码的修改意图,即对方(Remote)为什么要这样改,要达到什么目的?本方(Local)为什么要这么改,要达到什么目的?

修改比较复杂是,在图3的界面中,可能看不清具体的修改内容,可以在 tortoisegit 中查看两边修改前后的对比。

(图4)查看两边具体的修改。

下面是一张稍显复杂的两边修改的对比图。

(图5)两边修改对比

通过图5 ,可以具体查看两边的修改意图,具体在解冲突是,可能没办法一次处理完。

这时需要先在临时处理冲突(如应用某一边的修改),并记录下另一边的修改(如保留这个窗口,或者截图。)

在 git 的冲突处理完之后(这里其实只是形式上处理完了,实际上丢弃了某一边的修改),再修改代码。

更复杂的情况,可能两边对代码的改动都非常大,需要代码重构才能解决问题。当然,这个情况很少,也应该避免发生。

补充

如图1和图5所示,其中的 Remote 指被合并过来的分支,这里是在 f/feature 上合并 dev , 则 Remote 指 dev 上的修改,Local 指 f/feature 上的修改。

重点

兼顾两边的修改意图,不能因为解冲突,丢失了某一边的修改。

git GUI 与 tortoisegit

原文链接:

https://www.cnblogs.com/jasongrass/p/11199039.html

git 使用 tortoisegit 解冲突的更多相关文章

  1. Git、TortoiseGit中文安装教程,如何注册Gitee账号进行代码提交,上传代码后主页贡献度没显示绿点(详解)

    今天给大家分享的是 Git 软件和 TortoiseGit 图形化软件的详细安装教程以及如何在 gitee 上进行代码提交. 首先我也是个刚接触 gitee 的一个小白用户,这些都是自己一边学一边记录 ...

  2. iOS开发——开发实战篇&版本控制SVN和Git使用详解

     版本控制SVN和Git使用详解     公司的实际开发中,在天朝使用较多的还是SVN,因为SVN是集中式的,在天朝上班你们都懂的!     -----------------svn--------- ...

  3. Git命令详解

    一个中文git手册:http://progit.org/book/zh/ 原文:http://blog.csdn.net/sunboy_2050/article/details/7529841 前面两 ...

  4. Git在tortoiseGit以及eclipse的使用方法

    一.Git安装与简单使用 1.安装git,tortoiseGit 2.创建SSH Key 打开Git Bash,然后输入ssh-keygen生成公钥和私钥: 3.生成ppk文件. 打开puttykey ...

  5. 学习笔记之Git / Gitflow / TortoiseGit

    Git - Wikipedia https://en.wikipedia.org/wiki/Git Git (/ɡɪt/) is a version control system for tracki ...

  6. Git与TortoiseGit基本操作

    Git与TortoiseGit基本操作 1. GitHub操作 本节先简单介绍 git 的使用与操作, 然后再介绍 TortoiseGit 的使用与操作. 先看看SVN的操作吧, 最常见的是 检出(C ...

  7. 【Git使用详解】Egit的常用操作详解

    常用操作 操作 说明 Fetch 从远程获取最新版本到本地,不会自动merge Merge 可以把一个分支标签或某个commit的修改合并现在的分支上 Pull 从远程获取最新版本并merge到本地相 ...

  8. Git 命令详解及常用命令

    Git 命令详解及常用命令 Git作为常用的版本控制工具,多了解一些命令,将能省去很多时间,下面这张图是比较好的一张,贴出了看一下: 关于git,首先需要了解几个名词,如下: 1 2 3 4 Work ...

  9. Git应用详解第三讲:本地分支的重要操作

    前言 前情提要:Git应用详解第二讲:Git删除.修改.撤销操作 分支是git最核心的操作之一,了解分支的基本操作能够大大提高项目开发的效率.这一讲就来介绍一些分支的常见操作及其基本原理. 一.分支概 ...

随机推荐

  1. django接口文档自动生成

    django-rest_framework接口文档自动生成 只针对用到序列化和返序列化 一般还是用第三方yipi 一.安装依赖 pip3 install coreapi 二.设置 setting.py ...

  2. RandomAccessFile(),读写文件数据的API,以及复制文件操作

    package seday03;import java.io.File;import java.io.RandomAccessFile; import java.io.IOException; /** ...

  3. PHP面试题2019年京东工程师面试题及答案解析

    一.单选题(共28题,每题5分) 1.Apache与Nginx大访问下性能描述正确的是? A.Apache所采用的epoll网络I/O模型非常高效 B.Nginx使用了最新的kqueue和select ...

  4. react-native 标题随页面滚动显示和隐藏

    效果图如下: 代码实现: import React, {Component} from 'react'; import { ScrollView, Text, View, FlatList, } fr ...

  5. BayaiM__Linux安装MySQL的两种方法

    BayaiM__Linux安装MySQL的两种方法     < 以下内容,纯属抄袭,如有雷同,爱咋咋地 >  阅读(21210) | 评论(4340) | 转发(5660) | 删除 编辑 ...

  6. Multi-touch (MT) Protocol 小结

    1, 两种多点触摸协议: A类: 处理无关联的接触: 用于直接发送原始数据: B类: 处理跟踪识别类的接触: 通过事件slot发送相关联的独立接触更新. 2, 触摸协议的使用: A类协议: A类协议在 ...

  7. 一次shell脚本小事故,从中学习排错过程-软件测试

    一次shell脚本小事故,从中学习排错过程 事出,童鞋使用shell脚本搭建测试环境的过称中..... 配置环境变量文件:/etc/profile(用于升级JDK或其他) 手动编辑方法:vi /etc ...

  8. [C6] Andrew Ng - Convolutional Neural Networks

    About this Course This course will teach you how to build convolutional neural networks and apply it ...

  9. Appium自动化测试之微信h5元素识别和代码实战

    总会有人问微信的自动化测试怎么做.其实我不太明白,为啥你要对ta做自动化测试啊,除非你们公司产品是基于微信做的开发否则没必要.即使一个公众号我也觉得没必要做自动化测试,基本功能点下没问题就可以了,毕竟 ...

  10. arduino (3) 控制sim900A发送短信

    狗屎佳世通旗舰店,卖的什么破玩意sim900a芯片,不支持联通卡,还生明模块支持双卡的 之前买的esp8266-07都是内存偷工减料 买的液体浊度传感器给的原理图也不给基本接线. 差评垃圾店,你敢卖就 ...