Как сохранить незафиксированные изменения в локальном репозитории Mercurial, при этом все еще нажимая / вытягивая?

StackOverflow https://stackoverflow.com/questions/6392832

  •  29-10-2019
  •  | 
  •  

Вопрос

Если я работаю с файлами, которые не хочу фиксировать, я просто сохраняю их. Затем у меня есть другие файлы, которые я хочу отправить на сервер, однако, если кто-то другой внес изменения в репозиторий, и я их вытащу, он попросит меня объединить или переустановить ... но любой из этих вариантов приведет к тому, что я чтобы потерять мои локальные изменения, которые я не фиксировал .

Что делают другие люди, чтобы обойти эту проблему? Мне трудно разобраться в документации по расширению стеллажа.

Примечание. Я использую Mercurial Eclipse для отправки и получения файлов на / с сервера.

Мы будем благодарны за любые объяснения по этому поводу! Спасибо!


Пример:

Я работаю над своим сайтом в Mercurial Eclipse. У меня есть новая папка и новые файлы, которые я пока не хочу передавать на сервер. Я также изменил некоторые существующие файлы и пока не хочу вносить эти изменения в жизнь.

Затем что-то на моем веб-сайте ломается, и мне нужно это исправить, это не позволит мне исправить это без перезагрузки или слияния с самой последней подсказкой репо, и это приведет к потере всех моих незафиксированных изменений.

Что мне делать с моей новой папкой и файлами, которые я редактировал, если я не хочу их потерять? Повторное клонирование кажется утомительным. Копирование файлов в новую папку также кажется утомительным. Я уверен, что Shelving или MQ сделают то, что я хочу, но я пока не знаю, как это сделать.

Это было полезно?

Решение

Я уверен, что кто-то поможет вам найти плохой обходной путь, но лучший способ - изменить ваши цели - просто зафиксируйте.Код, который не был зафиксирован, не был написан.Если вы категорически не можете терпеть частые коммиты в вашей истории, используйте Mercurial Queues с репозиторием очередей и зафиксируйте это.Затем вы можете вставить наборы изменений, нажать / вытащить / объединить и снова отправить их, и вся ваша ценная работа будет зафиксирована в очереди исправлений.

Другие советы

Что касается вашего примера ситуации, вот что я бы сделал (следуя стратегии Ry4an, чтобы просто зафиксировать то, над чем вы сейчас работаете, но не хотите публиковать уже):

Предположим, вы начали работать в таком репозитории:

общий

То есть есть 2 файла и 2 коммита / ревизии. Вы выполняете некоторую работу, допустим, добавляете новую функцию, и тогда ваша рабочая копия может выглядеть так:

общий

Есть 2 новых и 1 измененный файл. Теперь вам нужно исправить ошибку, для которой вам также нужны новые изменения в удаленном репозитории. Сделайте снимок текущей работы, зафиксировав ее, и извлеките удаленные изменения (в каком порядке вы это делаете, извлечение по умолчанию не затрагивает состояние вашей рабочей копии):

общий

Это может привести к появлению такой истории:

общий

Теперь вы можете обновить / проверить версию 3 и начать исправлять ошибки:

общий

Выглядит хорошо, давайте продвинем ваше исправление, то есть сделаем его живым, не публикуя промежуточную работу:

общий

Это подталкивает все изменения, ведущие к версии 4, вашему исправлению ошибок, но никакие другие ветки в вашем локальном репозитории. Вы также можете использовать -r ., который относится к родительской ревизии вашей рабочей копии, то есть к ревизии, которую вы только что зафиксировали.

Наконец, вы можете вернуться к работе над функцией и продолжить работу:

общий

Эти шаги выполняются в командной строке, но я думаю, что нетрудно адаптировать общую концепцию к соответствующим щелчкам в плагине Eclipse Mercurial.

Дополнительные примечания:

  • Возможно, вы захотите добавить в закладки фиксацию моментального снимка, чтобы вам не приходилось работать с идентификаторами или номерами ревизий.
  • Если вы хотите опубликовать свою работу над функцией в одном коммите позже, используйте расширение collapse , когда закончите.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top