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
Mercurial 关闭头部而不进行任何更改_Mercurial - Fatal编程技术网

Mercurial 关闭头部而不进行任何更改

Mercurial 关闭头部而不进行任何更改,mercurial,Mercurial,我正在做一个使用mercurial的项目,它陷入了一个混乱的局面,有很多脑袋都死了 我想去掉这些头,把提交图放回一行 我被告知有一种方法可以合并分支,但同时忽略任何文件更改,因此基本上只是合并树,但我似乎无法计算出命令集 有没有办法做到这一点,通过合并和忽略文件更改来消除分支?或者,是否有一种方法可以在不进行更改的情况下再次引入图形(这在项目中并不重要)?我认为这正是您想要的: 它将创建新的合并变更集,以关闭“其他”头,而不接受其任何变更。你不会以线性历史结束,但你会以一个脑袋结束 其他较差的

我正在做一个使用mercurial的项目,它陷入了一个混乱的局面,有很多脑袋都死了

我想去掉这些头,把提交图放回一行

我被告知有一种方法可以合并分支,但同时忽略任何文件更改,因此基本上只是合并树,但我似乎无法计算出命令集


有没有办法做到这一点,通过合并和忽略文件更改来消除分支?或者,是否有一种方法可以在不进行更改的情况下再次引入图形(这在项目中并不重要)?

我认为这正是您想要的:

它将创建新的合并变更集,以关闭“其他”头,而不接受其任何变更。你不会以线性历史结束,但你会以一个脑袋结束


其他较差的答案包括使用
hg strip
hg clone-r
消除你不想要的头/匿名分支。它们之所以低劣,是因为(a)如果存在其他克隆,你无法剥离它,它根本不起作用,(b)它们丢弃了历史,这与良好的版本控制实践背道而驰——即使是你认为你现在不想要的工作,总有一天也会有价值。

如果你使用的是龟甲和命名分支,您可以在“提交”对话框中选择“分支”选项以关闭分支,它将允许您在没有实际文件更改的情况下提交


它仍然会给您留下一个头部,但会被标记为不活动。

我不认为剥皮是低劣的。事实上,我不推荐消除合并:历史图会误导性地表明合并的行基于消除的分支。如果以后可能需要一根树枝,请保留它,或者以其他方式剥掉它。告诉你的同事也剥离/重新整理他们的回购协议。如果一个人理解剥离与协作相关的含义,那么就可以使用它。尽管如此,你仍然可以维持一个公开的简化(即剥离)回购和一个内部死胡同回购,你可能(但不确定)不再需要分支机构。我就是这样做的。该操作的命令行是
hgcommit--close branch
,虽然它确实将头部保持在那里(如果您真的愿意,您可以稍后提交到该头部以重新打开分支),但对于大多数操作(例如
hgheads
,更重要的是,
hgmerge
)它将忽略它作为头部<但是,code>hg-push仍然需要使用--force。这可以。。。用于命名的分支。但我的大部分工作都是使用匿名的n头hydra。这也适用于匿名分支(没有分支名称的分支)以及HG2.0.2。更新要关闭的头部并“hg commit--close”。