Hg удалить * удаленные файлы! Как мне вернуть их?

Люди, мне нужна ваша помощь!

Я попытался перенести свой hg-репозиторий на битбакет в первый раз. Это не сработало, и я думал, что это потому, что проект огромный. Поэтому я хотел нажать только один файл. Поскольку раньше я делал "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 log:

$hg log

  changeset:   6:4726f671ae96
  tag:         tip
  user:        KG <[email protected]>
  date:        Wed Dec 04 12:21:30 2013 +0100
  summary:     test

  changeset:   5:55b3158def38
  user:        KG <[email protected]>
  date:        Wed Dec 04 12:17:19 2013 +0100
  summary:     bla

  changeset:   4:ae0dd836586d
  user:        KG <[email protected]>
  date:        Wed Dec 04 12:14:50 2013 +0100
  summary:     blabla

  changeset:   3:0249fdc26fa7
  user:        KG <[email protected]>
  date:        Wed Dec 04 12:13:59 2013 +0100
  summary:     test

  changeset:   2:40bdcf4d2104
  user:        KG <[email protected]>
  date:        Wed Dec 04 12:12:37 2013 +0100
  summary:     first commit test

  changeset:   1:f9e20020ca1d
  user:        KG <[email protected]>
  date:        Sun Nov 10 14:54:46 2013 +0100
  summary:     first commit

  changeset:   0:7a8edcee06ff
  user:        KG <[email protected]>
  date:        Mon Nov 04 20:36:41 2013 +0100
  summary:     blabla

Ответ 2

Ваши файлы не исчезли. Mercurial не выбрасывает данные, это одно из первых правил системы.

Чтобы объяснить, что hg remove сделал для ваших файлов, давайте посмотрим на случаи по одному. Файл в вашей рабочей копии может находиться в одном из нескольких разных состояний: он может быть изменен, добавлен, удален, отсутствует, неизвестен, проигнорирован или очищен.

Я подготовил рабочую копию, которая выглядит так:

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

Файлы a до g находятся в семи состояниях, упомянутых выше. Теперь мы можем говорить о том, что происходит, когда вы пытаетесь удалить эти файлы:

  • A измененный файл (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) больше не присутствует в рабочей копии, поэтому больше ничего не происходит.

  • Файл untracked (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 возвращается с тем же содержимым, которое было до его удаления.