В чем разница между откатом, возвратом и полосой в плагине Mercurial Eclipse? - PullRequest
48 голосов
/ 20 марта 2011

В чем разница между откатом, возвратом и выделением пунктов меню в плагине Mercurial Eclipse?

Можно ли удалить коммит в локальном репозитории без изменения файлов в моем рабочем пространстве с помощью одной из этих 3 команд?

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

Единственное решение, которое я вижу, - это создать второе рабочее пространство.Но для меня это выглядит излишним.

1 Ответ

60 голосов
/ 20 марта 2011

Все эти команды взяты из самого Mercurial, и для них есть много хороших постов сравнения / контраста. Однако вот они вкратце:

  • rollback: отмена одного уровня. Отменяет последнее нажатие или коммит ( может быть опасно )
  • backout: создать новый коммит, обратный данному коммиту. Чистый эффект отменяется, но изменения остаются в вашей истории.
  • strip: удалить ( уничтожить ) изменения из истории. Удаление набора изменений также удаляет все его дочерние элементы, поэтому его можно использовать только для усечения истории, но не для удаления фрагмента.

Все три очень хорошо описаны здесь: http://www.selenic.com/mercurial/hg.1.html

На ваш вопрос 2 вы можете использовать strip, чтобы удалить самый последний коммит, и это не изменит ваш рабочий каталог.

На ваш вопрос 3 вы можете легко внести изменения в другую часть этого проекта:

hg commit -m 'commit your half done work'
hg update OLDERCHANGESET # your working directory now is without the half-done-work
.. do that quickfix ...
hg commit -m 'quickfix'
hg push tip # this pushes the tip revision (latest) and its ancestors, but the half-don't work isn't an ancestor so it doesn't get pushed
hg update HALFDONEWORK # you can find the right revision number using "hg heads"

Это называется "анонимная ветка", и это очень распространенный способ работы. Вы заканчиваете тем, что передали половинную законченную функцию, но можете возобновить ее позже, и вам не нужно нажимать ее.

Это отличное объяснение анонимных веток: http://stevelosh.com/blog/2009/08/a-guide-to-branching-in-mercurial/#branching-anonymously

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...