Mercurial: удалить набор изменений из удаленной ветки

Есть ли способ удалить a из удаленного набора изменений или удалить весь набор изменений? Я случайно нажал файл .war на удаленное репо, и я хочу его удалить.

20
задан Miguel Ping 25 мая '09 в 18:21
источник поделиться
4 ответов

Я использовал расширение hg mqueue для редактирования истории. Кажется, что это сработало. Спасибо всем.

4
ответ дан Miguel Ping 26 мая '09 в 12:44
источник поделиться

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

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

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

Если вы решите удалить его, я предлагаю использовать hg clone, чтобы получить копию без нее. Это безопасный путь, поскольку он всегда будет оставлять резервную копию. Если вы нажали [z] в удаленный репозиторий:

[x] --- [y] --- [z]

и теперь хотите удалить его, затем войдите в сервер и выполните

hg clone -r y repo repo-without-z

Затем repo-without-z будет содержать все переменные до [y] - то есть [z] будет удалено:

[x] --- [y]

Затем вы можете продолжить работу и нажать новый набор изменений:

[x] --- [y] --- [w]

Если я уже вытащил набор изменений [z] и теперь вытащить [w], я увижу две главы в репозитории:

            [w]
           /
[x] --- [y] --- [z]

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

Вы также можете использовать расширение MQ, чтобы удалить наборы изменений на месте. Таким образом, вы не будете создавать новый клон.

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

Если репозиторий находится на Bitbucket, вы не можете войти на сервер. Но Bitbucket недавно добавила функциональность полосы в свой веб-интерфейс. Найдите "Управление репозитариями" в разделе "Админ".

34
ответ дан Martin Geisler 25 мая '09 в 19:27
источник поделиться

Bitbucket предлагает вам пакет (резервное копирование) при удалении, и это означает не против вашей квоты. Причина, по которой это делается, заключается только в том, что мы не сделали недействительным ключ кэша, указав, сколько места вы используете.

Это ошибка в нашей системе и будет исправлена. До тех пор будьте уверены, что набор изменений удален, а резервная копия бесплатна: -)

13
ответ дан jespern 26 мая '09 в 10:04
источник поделиться

У меня был аналогичный случай, когда я хочу удаленно удалять ветвь с измененной ветвью "A" из ветки "Dev" с помощью TortoiseHg:

  • Создать ветвь AA из ветки родительской ветки; его происхождение.
  • Объедините A в AA (рабочий каталог) и убедитесь, что опция "Отменить все изменения из другой версии" отмечена.
  • Объединить AA в ветвь Dev (с сообщением фиксации, указывающим, что изменения ветки A были удалены).

Вы увидите, что изменения в ветке A больше не существуют в Dev.

1
ответ дан MarwaAhmad 14 февр. '17 в 7:01
источник поделиться

Другие вопросы по меткам