您使用什么命令从Mercurial存储库中排除文件?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了您使用什么命令从Mercurial存储库中排除文件?相关的知识,希望对你有一定的参考价值。

我的Mercurial存储库中有一个大文件阻止我的存储库上传到Bitbucket。我收到错误:

abort: HTTP Error 413: Request Entity Too Large

幸运的是,此文件的文件扩展名与我的存储库中的其他内容不同,因此应该很容易创建排除它的规则。但是,该文件已包含在存储库中的提交中,直到几天前它可能变得太大。我是否需要将其从历史记录以及将来的提交中删除?我需要做什么命令?

我在“IncludeExclude Proposal”上找到了这个文件,但我不确定它是建议的功能还是实际功能:

https://www.mercurial-scm.org/wiki/IncludeExcludeProposal

答案

如果您已经提交了它,并且它看起来像你有,那么排除(aka hgignore)将不适合你。

.hgignore(以及您在InlcudeExcludeProposal中看到的从未采用的高级语法)有助于防止您意外添加您不想添加的文件。一旦你添加了一个文件,hgignore没有任何效果,一旦你提交了添加它,没有EditingHistory没有办法从历史中删除它

如果你可以摆脱最后几次提交(意图重新做除了大文件添加之外的所有提交)你可以使用hg clone -r lastknowngoodextension existingrepopath newrepopath并且你将在newrepopath上删除那些不需要的扩展。我认为,Bitbucket提供了一个用于删除变更集的Web界面,但我不确定。

如果您不能只是克隆(或剥离)最后几个版本,那么您将使用mqconvert或类似的方式进入EditingHistory空间。

如果您希望跟踪这些文件但不在回购中,您可能需要查看bfiles extension

另一答案

现在有可能。 TortoiseHg可以做到(有一个选项'忘记文件')。

或者在控制台中输入hg forget

以上是关于您使用什么命令从Mercurial存储库中排除文件?的主要内容,如果未能解决你的问题,请参考以下文章

在 Mercurial 存储库中查找大文件

从 git 存储库中排除 ios 项目的哪些文件? [复制]

Mercurial:我如何找出我的工作副本和另一个副本之间的区别

在 Mercurial 中回滚多个提交(在推送到公共之前)

提交后修复Mercurial存储库中的重命名

忽略Mercurial中文件的未来更改,但仍然跟踪它[重复]