Hg: невозможно найти удаленный файл в предыдущем коммите

У меня есть репо с myrepo содержащим f1.txt.

Сначала я добавил эти файлы в репо

$ hg add
$ hg commit

Then I removed 'f1.txt' and created 'f2.txt' and made commit again

$ rm f1.txt
$ vim f2.txt # create file here

$ hg add 
$ hg commit

Теперь, когда я проверяю предыдущую фиксацию, я не вижу f1.txt. Почему это происходит? Я думаю, это можно сделать так, как в git!

0
задан 05 мая '14 в 18:01
источник поделиться
1 ответ

При обновлении (checkout) к предыдущей фиксации вы фактически забыли зафиксировать удаление файла f2.txt. Таким образом, у вас все еще есть незафиксированные изменения, и обновление к предыдущему набору изменений не возвращает файл f1.txt.

Это то, что вы, вероятно, получаете по status

$ hg status
! f1.txt

Вы увидите, что f1.txt все еще отсутствует.

Теперь, чтобы решить эту проблему, вам также необходимо зафиксировать удаление файлов. Для этого лучше использовать addremove или, чтобы сохранить тот же самый образец, который вы упомянули:

$ hg addremove
$ hg commit

'Then I removed 'f1.txt' and created 'f2.txt' and made commit again

$ rm f1.txt
$ vim f2.txt # create file here

$ hg addremove
$ hg commit

Тогда ваше репо было бы таким, каким вы намеревались это сделать.

Еще один способ перейти в правильное состояние при обновлении до предыдущего набора изменений - это обновить и очистить:

hg update -C

Это удалит незафиксированные изменения, и f1.txt вернется.

2
ответ дан 05 мая '14 в 18:40
источник

Другие вопросы по меткам или Задайте вопрос