Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Merge 用于合并冲突和非冲突更改的Mercurial命令_Merge_Mercurial - Fatal编程技术网

Merge 用于合并冲突和非冲突更改的Mercurial命令

Merge 用于合并冲突和非冲突更改的Mercurial命令,merge,mercurial,Merge,Mercurial,Mac Yosemite上的Mercurial 3.4.1(10.10.5)。我不知道为什么我觉得hg如此混乱。几周前,我克隆了一份回购协议,并一直在四处啄食。我现在准备将我的所有更改推送到远程hg服务器,但其他几个开发人员同时也做了更改(冲突和非冲突)。此项目使用纯主线开发(无分支),而不是默认值 我运行了hg add.然后hg commit-m“修复x、y和z.,现在我需要将本地default头与远程/源hg服务器上的default头合并。因此,我需要: 精确的命令,该命令将自动合并所有无

Mac Yosemite上的Mercurial 3.4.1(10.10.5)。我不知道为什么我觉得
hg
如此混乱。几周前,我克隆了一份回购协议,并一直在四处啄食。我现在准备将我的所有更改推送到远程
hg
服务器,但其他几个开发人员同时也做了更改(冲突和非冲突)。此项目使用纯主线开发(无分支),而不是
默认值

我运行了
hg add.
然后
hg commit-m“修复x、y和z.
,现在我需要将本地
default
头与远程/源
hg
服务器上的
default
头合并。因此,我需要:

  • 精确的命令,该命令将自动合并所有无冲突的更改;及
  • 精确的命令,该命令将弹出一个编辑器,允许我查看和手动合并冲突的更改
我不确定这会有什么不同,但我的许多更改也重构了基本的项目结构(删除/重命名/移动了源文件和目录)。所以这些变化应该是相当重要的

读了这本书,我现在比以前更困惑了!没有,该文档在何处指定如何显式地将我的本地
default
头与远程
default
头合并。此外,文件提到:

“hg resolve”必须用于解析未解析的文件

什么是未解析文件?!?我必须在
hg merge
之前运行此命令吗?它是如何影响合并过程的?

合并始终是一种本地操作,您可以将一个版本从另一个分支或标题合并到另一个版本

当您使用内部合并工具时,它会将冲突标记添加到需要内部干预的位置。您通常访问这些文件,修复冲突,然后使用
hg resolve--mark file
显式标记这些文件中已解决的冲突。在未将所有合并冲突标记为已处理之前,无法提交合并。您可以将所有冲突标记为一次处理:
hg resolve--mark--all
——但请确保您实际处理了所有合并冲突,否则您的文件将被提交,而合并冲突指示器可能不是您想要的。

合并始终是一个本地操作,您可以从一个版本合并到另一个版本树枝或头


当您使用内部合并工具时,它会将冲突标记添加到需要内部干预的位置。您通常访问这些文件,修复冲突,然后使用
hg resolve--mark file
显式标记这些文件中已解决的冲突。在未将所有合并冲突标记为已处理之前,无法提交合并。您可以将所有冲突一次标记为已处理:
hg resolve--mark--all
——但请确保您已实际处理了所有合并冲突,否则您的文件将被提交,而合并冲突指示器可能不是您想要的。
hg merge
命令将当前工作目录中的文件与
-r
参数指定的修订中的更改(如果当前工作目录是分支头的签出,并且分支正好有一个其他头,则自动推断要合并的其他修订)。然后可以提交合并的结果,并且(提交后)成为这两个修订的子修订。因此,您通常要做的是:

hg update ORIGINAL_REVISION
hg merge -r NEW_REVISION
可以按照
hg帮助修订版
hg帮助修订集
中的说明指定
原始修订版
新修订版

hg merge
的结果将是将
新修订版
中的更改与
原始修订版
合并的结果。只要Mercurial能够在没有任何明显冲突的情况下组合这些更改,它就会这样做。请注意,
hgmerge
不会提交合并的更改,只会更新工作目录;提交它们以创建合并提交是一个单独的步骤

如果发生冲突怎么办?如果有可用的合并工具(Mercurial将尝试对可用的合并工具保持智能,并从其知道是否有可用的列表中选择一个,但您可能必须明确指定它,例如通过
--tool
选项;有关详细信息,请参阅
hg help mergetools
),此工具将启动,您可以在其中解决冲突。如果列表中没有可用的工具,并且您没有指定一个(通过
.hgrc
、环境变量
HGMERGE
--tool
选项),Mercurial将退回到其内部冲突解决工具(相当于
--tool:merge
),它只需将冲突标记添加到文件中,然后可以在您选择的编辑器中手动解决,或者使用知道如何处理此类冲突标记的工具解决

您可以使用
hg resolve
查看和更新有冲突的文件列表。具体而言,
hg resolve-l
将列出有冲突的文件,如果冲突已解决(例如,通过合并工具或因为您将其标记为已解决),则前缀为
R
,如果冲突仍未解决,则前缀为
U
。您可以使用
hg resolve-m FILE
FILE
标记为已解析,或使用
hg resolved-u FILE
将其标记为未解析(您还可以提供文件列表或
-a
标记所有文件)。您可以使用
hg resolve--tool-tool-FILE
hg resolve-FILE
对特定文件重新进行合并

一旦
hg resolve-l
不再显示未解决的冲突,就可以提交合并

如果在合并过程中的任何时候,您的工作