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,我的中央存储库存储在8GB U盘上。我不小心提交了一些大文件,因此存储库不再适合使用。有没有办法纠正这种情况?永远不要将代码存储库这样重要的东西存储在U盘上。这是一个很快释放所有代码的邀请!买一个有足够空间的外部硬盘,里面至少有两个独立的磁盘,可以镜像。将其永久存放在某个地方,不要随身携带。如果您需要从其他地方访问,请使用安全的internet连接远程访问您的硬盘。如果提交确实是意外的,您可以使用大文件回滚上次提交。 看 当然,如果你同时在上面做了其他重要的事情,这是行不通的。 另一种方法是使用

我的中央存储库存储在8GB U盘上。我不小心提交了一些大文件,因此存储库不再适合使用。有没有办法纠正这种情况?

永远不要将代码存储库这样重要的东西存储在U盘上。这是一个很快释放所有代码的邀请!买一个有足够空间的外部硬盘,里面至少有两个独立的磁盘,可以镜像。将其永久存放在某个地方,不要随身携带。如果您需要从其他地方访问,请使用安全的internet连接远程访问您的硬盘。

如果提交确实是意外的,您可以使用大文件回滚上次提交。 看

当然,如果你同时在上面做了其他重要的事情,这是行不通的。 另一种方法是使用删除包含大文件的整个分支


要小心,在执行这些操作之前,请确保您了解自己在做什么!首先在测试存储库或克隆上测试命令。

我选择了catchyifyoutry的答案,因为他有您可能会使用的步骤,但这里有一个方便的列表

不过,首先是一个提醒。如果您已经将此存储库推到了半公开的位置,并且有人已经将其拉到了存储库中,那么下面的提示都不起作用。当他们下一次推拉时,您将以未修改的形式获得原始变更集。你唯一的办法就是与每个拥有克隆的人交谈,要求他们删除它并重新克隆。也就是说,在清单上:

删除您在事故中提交的文件的方法

  • 如果您尚未提取或提交任何其他内容:
    hg rollback
    将作为一级撤消
  • 如果您愿意扔掉最后的N个修订版:
    hg clone-r-N repo带有太多repo-with-N-less变更集
    #示例:
    hg clone-r-2 big repo small repo
  • 如果您的更改时间太长,其中任何一项都不正常:
    hg convert--filemap myfilemap.txt太大repo new repo
在最后一种情况下,
myfilemap.txt
中包含:

exclude path/to/file/to/remove
注:

  • clone-r
    案例从技术上要求最小克隆,可能包括修订版tip-N,如果您有branchy repo。另外,需要L
    pull-r
    行(每个人头一行)来拉动其他非线性历史记录
  • 使用
    hgconvert
    解决方案,将修改每个修改的变更集及其所有后代的hashcode

在我的设置中,我至少有两份拷贝:一份在电脑硬盘上,另一份在U盘上。每一个都可以作为备份。我觉得这就足够了。代码是你的(也是你的选择):)我经历了一次电峰,它烧坏了我的电脑,包括内部硬盘,以及连接到USB端口的所有东西,包括一个U盘……如果它烧坏了连接到USB端口的所有东西,那会不会也烧坏你的外部硬盘?我个人建议在“云”服务(如BitBucket)上保留一个远程存储库。这种--filemap技巧听起来正是我所需要的。虽然有点麻烦,但在特殊情况下,这应该是必要的。谢谢!
exclude path/to/file/to/remove