hg删除*删除了我的文件!我该如何取回它们?

时间:2013-12-04 11:32:18

标签: mercurial bitbucket

伙计们,我需要你的帮助!

我第一次尝试将我的hg存储库推送到bitbucket。它没有工作,我认为这是因为该项目是巨大的。因此,我只想推送一个文件。 自从我做了" hg add *"之前,我想撤销这个,然后键入" hg remove *"现在它删除了我的计算机上的文件。但不是全部,只有一些......

我需要这些文件,我该怎么办?请告诉我他们没有离开,请拜托。

非常感谢你的帮助!!

这是我的命令历史记录:

  518  hg commit commit_test.txt -m "first commit"
  519  hg add commit_test.txt
  520  hg commit -m "test"
  521  ls -ll
  522  ls -la
  523  cd .hg/ 
  524  ls
  525  ls -la
  526  pico hgrc
  527  cd ..
  528  hg status
  529  hg add commit_test.txt~ 


  530  hg add commit_test.txt
  531  hg commit -m "blabla"
  532  hg push
  533  hg add commit_test.txt
  534  hg commit -m "maaan"
  535  hg status
  536  hg remove *
  537  hg status
  538  hg commit -m "bla"
  539  ls
  540  hg add test.txt 
  541  hg commit -m "test"
  542  hg push
  543  hg revert
  544  hg revert --all
  545  history
  546  hg add *
  547  hg add -r *
  548  hg help add
  549  hg add -S *
  550  cd gui_relabel/
  551  hg add *
  552  cd images/
  553  hg add *
  554  cd ..
  555  hg revert all
  556  hg revert *
  557  history

以下是hg日志给我的信息:

$ hg log

  changeset:   6:4726f671ae96
  tag:         tip
  user:        KG <...@gmail.com>
  date:        Wed Dec 04 12:21:30 2013 +0100
  summary:     test

  changeset:   5:55b3158def38
  user:        KG <...@gmail.com>
  date:        Wed Dec 04 12:17:19 2013 +0100
  summary:     bla

  changeset:   4:ae0dd836586d
  user:        KG <...@gmail.com>
  date:        Wed Dec 04 12:14:50 2013 +0100
  summary:     blabla

  changeset:   3:0249fdc26fa7
  user:        KG <...@gmail.com>
  date:        Wed Dec 04 12:13:59 2013 +0100
  summary:     test

  changeset:   2:40bdcf4d2104
  user:        KG <...@gmail.com>
  date:        Wed Dec 04 12:12:37 2013 +0100
  summary:     first commit test

  changeset:   1:f9e20020ca1d
  user:        KG <...@gmail.com>
  date:        Sun Nov 10 14:54:46 2013 +0100
  summary:     first commit

  changeset:   0:7a8edcee06ff
  user:        KG <...@gmail.com>
  date:        Mon Nov 04 20:36:41 2013 +0100
  summary:     blabla

2 个答案:

答案 0 :(得分:10)

你的档案没有消失。 Mercurial不会丢弃数据,这是系统的第一个规则之一。

为了解释hg remove对您的文件做了什么,让我们一个一个地看一下这些案例。工作副本中的文件可以是少数几种状态中的一种:可以修改,添加,删除,丢失,未知,忽略或清除。

我准备了一份看起来像这样的工作副本:

$ hg status --all
M a
A b
R c
! d
? e
I f
C g

ag的文件属于我上面提到的七种状态。我们现在可以讨论当您尝试删除这些文件时会发生什么:

  • 未删除已修改文件(a):

    $ hg remove a
    not removing a: file is modified (use -f to force removal)
    
  • 添加的文件(b)也未被移除:

    $ hg remove b
    not removing b: file has been marked for add (use forget to undo)
    
  • 工作副本中不再出现已删除文件(c),因此不会再发生此事。

  • 工作副本中不再出现缺失文件(d),因此不再发生此事。

  • 未删除未跟踪文件(e):

    $ hg remove e
    not removing e: file is untracked
    
  • 忽略文件(f)未被删除(因为未跟踪):

    $ hg remove f
    not removing f: file is untracked
    
  • 干净文件(g 已删除。

hg remove实际从工作副本中删除的唯一文件类型是干净文件。已提交干净文件,因此内容安全地存储在存储库中。您可以使用hg revert

将其恢复
$ hg revert g
$ hg status --all
M a
A b
R c
! d
? e
I f
C g

文件g的内容与删除之前的内容相同。

答案 1 :(得分:1)

看起来你可以运行

hg backout 5

如果您愿意,可以阅读more about backout