分布式版本控制软件水银(Mercurial)使用指南4

merging

翻译自:http://hginit.com/04.html

有时合并导致冲突。通常它们很容易解决,但你需要解决它们否则你的仓库将会有多个头。谁又想要多个头呢?

版本控制一个非常重要的组成部分是在同一个代码库中进行多人协同工作。

想象一下Rose和我都想对果酱食谱进行修改。Rose提高了牛油果的品质。在她开始工作前,她将从中央仓库拉取所有的最新变动,以便自己在最新版本上工作。


现在看下编辑情况:


她提交并且推送这一变化到中央仓库:


同时,我在这一文件的不同的地方做了一些更改:


我能够提交,但是我不能够推送到中央仓库。


这也许是在水银中最没有用的错误信息,它应该这样说:


事实,那正是我将要做的:


好奇刚刚来了什么?输入** hg log -P**。这一命令可以帮助你方便地查看。


事实上,那是Rose较早的改动,我的仓库现在该怎么办呢?


我有“多个头”。本质上,我的仓库看起来如下:


看到两个头了吗?这是因为Rose的改动是基于变更集7的,而我的改动也是基于变更集7的。所以现在有必要进行合并。(千万不要忽略它)


合并命令,hg merge,合并两个头,并将结果保存在我的工作目录,它没有提交,这给了一个机会让我来检查合并是否正确:


这看起来是对的,鳄梨是Hass,辣椒是胡椒,所以我将继续下一步,将其推送到服务器。


我推送了两个变更集:我原来的墨西哥胡椒变更,和之后的合并,这是它自己的变更集。

注意我俩各自的变更之间没有冲突。因为我和Rose在修改配方的不同部分。所以合并非常容易。这是最常见的情况,因为在大多数组织中,每个程序员被分配在不同的代码段进行工作。

但是,即便是管理再好的、健康的组织,合并冲突时有发生,这时水银会要求人为地来解决这些冲突。让我们看看那是什么样子的。

首先......我想要让Rose的把我的变更集给拉下来:


现在,我们来看下将要发生什么,当有一些冲突,我们都要修改一下配料。

我添加了一个香蕉:


我先检查下香蕉的变化:


而Rose,在完全相同的一行添加了一个芒果。


确切地说是“ripe young mango”。


这次我先上传了我的变更,所以Rose必须进行合并。哈!


忽然,冲突被检测到,并弹出一些合并冲突的解决工具,是不太友好的界面,但是他们通常是非好好用的,你能想到的功能都有。一个常见的合并冲突解决工具是 KDiff3, 如下:


在KDiff3中,你能看到4块窗口,左上角是原始文件,上面中间部分显示Rose的版本,右上方显示我的版本。下面的窗口中是一个编辑器,Rose在这里解决冲突并构建出合并的文件。

修改冲突是一个相对简单的问题,要做的是遍历每一个冲突并且做一个选择题。Rose决定用香蕉芒果酱。


Rose保存了她的改动并且退出了KDiff3。


冲突解决了。

有一件事你要牢记:你不必按照任何人的时刻表去合并。你在任何时候都可以使用hg pull,如果你不想要合并冲突,你完全可以继续工作,然后愉快地提交。等到你什么时候想合并了,你再合并。

自测

以下是你读完本篇教程应当会做的事:

  1. 与他人在相同的代码块上工作。
  2. 获得他人的变更。
  3. 推送你自己的变更。
  4. 解决合并冲突。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342

推荐阅读更多精彩内容