我将大量数据从实验室文件服务器复制到笔记本电脑,然后不小心将其提交到了我用来备份论文的Mercurial存储库。

现在,我有200+ MB的数据,即使删除了文件,也不需要占用硬盘空间。 这并不是真正的问题,但是我同步到的bitbucket存储库仅给我1 GB的空间,我将需要这些空间来存储我的数据。

愚蠢的然后我删除了文件并再次提交,所以我不能只使用https://stackoverflow.com/a/3290523/961959中描述的回滚,而无需创建新的存储库并必须使用bitbucket重置所有内容。

有什么办法可以解决这个问题,所以我不会浪费四分之一的存储空间? 我可以回滚我所做的最后2次提交吗?

===============>>#1 票数:5

您可以:

  1. 使用hg strip删除在其中添加了文件及其所有后代的更改集(请注意,这将完全抹去它们,因此,只有在这些文件是此期间唯一提交的文件时,才执行此操作)。
  2. 将那些变更集导入到MQ并进行编辑。
  3. 通过--filemap选项hg convert从Mercurial hg convert为Mercurial。
  4. 常见问题所述,将您的存储库克隆到错误的变更集,然后从该变更集推送。

===============>>#2 票数:4 已采纳

我将描述如果我想回滚两个最近的提交该怎么做。

我认为您尚未推动Bitbucked。 我还假设您在DAG之上有这些变更集:

o  C: Deleted files FILE1 and FILE2
|
o  B: Some nice changes; also added large files FILE1 and FILE2
|
o  A: Some good changeset

这里, C应完全除去, B应该被编辑( FILE1FILE2加法应该回滚)和A和下面应保留原样。

警告 :仅当BC尚未推送到Bitbucked(或任何其他公共仓库)时,此方法才有效。

您需要启用MQ扩展才能执行此操作。 为此,请将这些行添加到您的.hg/hgrc.hg/hgrc文件中:

[extensions]
mq=

脚步

首先,我剥离C

$ hg strip C

现在, C被废除,父代为B 我将B作为Mercurial Queue 补丁导入以对其进行编辑:

$ hg qimport -r B -n B.patch

现在,我的队列上有一个补丁,它是从B创建的。 我删除了大文件,并刷新了补丁:

$ hg forget FILE1 FILE2 
$ hg qrefresh

现在, B.patch不再包含大文件。 但是,它们仍在磁盘上,即使不控制bu Mercurial。 现在,我完成了MQ的工作:

$ hg qfinish -a

这是我目前所拥有的:

o  B1: Some nice changes, no big files here
|
o  A: Some good changeset

===============>>#3 票数:0

如果更改已被推送到BitBucket,它确实提供了从服务器剥离更改集的选项。 在本地执行剥离后,您应该访问url:

https://bitbucket.org/<user>/<repo>/admin/strip

在特定的提交之后,它将提供一个剥离所有更改的选项。

注意:以前在repo config菜单中有一个链接可以访问该URL。 现在访问它的唯一方法似乎是直接键入它。

  ask by Canageek translate from so

未解决问题?本站智能推荐:

1回复

如何从bitbucket mercurial存储库中删除远程提交

如何从bitbucket mercurial存储库中删除远程提交? 调查结果:我在“管理员”部分找不到“存储库管理”。 在这个答案中提到了。 此功能是否已从bitbucket弃用/删除? 如果不是在哪里? 请注意,我是存储库的所有者。 专家注意! 只有:记住我已经把我的提交
1回复

具有bitbucket子存储库的Mercurial存储库 - 如何防止推送

我正在Mercurial存储库下设置一些第三方子存储库。 一个subrepo是在Bitbucket上托管的另一个Mercurial仓库。 由于它是一个公共回购,而我不是它的贡献者,我不想回到它。 但是,当我克隆父存储库时,我仍希望自动克隆存储库。 首先,我想访问子存储库的集合历史记录
1回复

提交默认设置后无法将Mercurial存储库推送到Bitbucket

我犯了一个错误,那就是在由Bitbucket托管的Mercurial存储库中提交默认设置。 现在,即使它们在另一个分支上,我也无法再推送任何更改。 我收到一个错误: 我什至尝试使用hg push -b BranchName仅hg push -b BranchName特定分支,但是即使
1回复

无法推送到Bitbucket Mercurial存储库

我正在使用SourceTree和Bitbucket。 我曾经能够毫无差错地推进。 现在我明白了 我可以在浏览器中看到存储库。 我可以从另一台机器推出。 它在url为myusername@bitbucket.org/myusername/myrepository的机器上正常
1回复

将本地Mercurial存储库移动到Bitbucket

有没有人拿过当地的回购并将其导入Bitbucket? 当我这样做时,导入页面要求输入URL,但我正在使用没有端口8000打开外部世界的本地计算机。 我可以使用一些特殊形式的文件路径吗?
1回复

是否可以在Bitbucket存储库中使用Mercurial ACL Extension?

我们有一个小团队与BitBucket Mercurial存储库一起工作。 问题是我们有一个“发布”分支,并希望限制对某些人的访问。 我一直在寻找Mercurial ACL扩展,但它似乎只适用于本地存储库。 如果每个人都直接推送到Bitbucket,你知道任何解决方案吗? 谢谢
3回复

推送到Mercurial存储库(bitbucket)会产生“请求实体太大”吗?

当您尝试推送到Bitbucket上的Mercurial存储库并产生响应时,它是什么意思:
1回复

Jenkins访问bitbucket.org上的Mercurial存储库的问题

我的Jenkins服务器已停止构建在bitbucket.org上托管的Maven项目。 构建在本地工作,但詹金斯报告此错误: 有什么想法吗? [编辑] 因此,我运行了hg paths并得到了响应,表明tomcat用户不受信任: 在以tomcat用户身份运行hg in
1回复

克隆并在Bitbucket存储库中构建早期Mercurial版本的代码

我希望在Mercurial下的Bitbucket存储库中重建我的代码的早期版本。 历史是: 我打算用: 进入一个新的本地存储库并重建为一个单独的项目。 我当前的问题是我知道提交标识符( abefe99 )但不知道数字修订版(这似乎是所有hg命令所需的)。 使用Bitbuck
5回复

使用私有Bitbucket Mercurial存储库配置composer.json

我的项目使用我自己的库,该库位于bitbucket.org上的私有Mercurial存储库中。 该库没有配置composer.json。 我尝试将该库作为我项目的依赖项。 首先我给composer.json写了以下字符串: 并运行composer install我有一个错误