Что такое обратное слияние ( Revert Merge) в SVN, простое объяснение и пошаговые процессы от начала до конца

Что такое обратное слияние ( Revert Merge) в SVN, простое объяснение и пошаговые процессы от начала до конца было бы здорово.

Может ли кто-нибудь дать мне процессы, пронумерованные, если можете. И хороший и простой пример тоже был бы великолепен.

2 ответа

Решение

Из руководства пользователя " Черепаха ":

Если вы хотите объединить изменения обратно из вашей рабочей копии, чтобы отменить изменение, которое уже было зафиксировано, выберите ревизии для отмены и убедитесь, что установлен флажок Отменить слияние.

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

Короткий ответ

Обратное слияние формально такое же, как слияние, но, конечно, в обратном порядке. Изменения от обратно слитых ревизий отменяются в вашей рабочей копии.

пример

Например, если вы хотите вернуться из HEAD в rev. 123, вы бы осуществили обратное слияние следующим образом, предполагая, что ваша рабочая копия находится в состоянии HEAD:

svn merge -r HEAD:123

Это установит вашу рабочую копию в состоянии ревизии 123, но формально она будет основана на HEAD. Тогда ваше рабочее состояние будет таким же, как если бы вы вручную отредактировали свои файлы до версии 123. На данный момент в хранилище ничего не изменилось.

Обратите внимание, что это не то же самое, что обновление до версии 123. Если бы вы сделали это, хотя ваши файлы рабочей копии имели бы одинаковое содержимое в обоих случаях, состояние вашей рабочей копии было бы другим: SVN будет знать, что ваша рабочая копия была основана на ревизии 123 вместо HEAD. Если вы затем попытаетесь зафиксировать изменения, вам будет предложено сначала обновить HEAD, что отменит обновление до версии 123, при условии, что вы ничего не изменили за это время.

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

svn commit -m "We undid all changes since r123."

Или, если вы чувствуете, что допустили ошибку, вы можете отменить обратное слияние, которое является чем-то совершенно другим, поскольку оно только переводит вашу рабочую копию в состояние хранилища, на котором основано (в нашем случае, HEAD):

svn revert --recursive .

Но будьте осторожны с этим, он необратимо отменяет ваше обратное слияние:-). Точка относится к текущему каталогу и должна быть указана явно (как это не имеет место с большинством других команд SVN) в качестве меры безопасности, чтобы избежать случайного возврата чего-либо.

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