Я нашел различные примеры того, как отменить коммит SVN, как
svn merge -r [current_version]:[previous_version] [repository_url]
или
svn merge -c -[R] .
Но ни один из них, кажется, не работает. Я попробовал эти команды и проверил файлы, которые были изменены вручную.
Как мне отменить коммит с ревизией № 1944? Как я могу проверить, что возврат был сделан (не смотря в фактическом файле, чтобы изменения были отменены)?
Ответы:
Оба примера должны работать, но
svn merge -r UPREV:LOWREV .
отменить диапазонsvn merge -c -REV .
отменить одну ревизиюв этом синтаксисе - если текущим каталогом является WC и (как это должно быть сделано после каждого слияния) вы передадите результаты
Хотите посмотреть логи?
источник
svn: Merge source required
, Нет кости.svn merge -c -42587,-42589 .
Если вы используете клиент TortoiseSVN , это легко сделать через диалог Показать журнал .
источник
svn merge -r 1944:1943 .
следует отменить изменения r1944 в вашей рабочей копии. Затем вы можете просмотреть изменения в вашей рабочей копии (с помощью diff), но вам нужно будет зафиксировать их, чтобы применить возврат в хранилище.источник
svn merge -r 1944:1943 .
вместо этого, но ничего не изменилось.svn status
ни другоеsvn diff
ничего не дает.svn: Try 'svn help' for more info svn: Merge source required
svn merge -r 1945:1943 .
похоже, сработало. Я думаю, что понимаю: вам нужно объединить версию из «до» «плохого» коммита в ваш рабочий репозиторий. Это нормально, если вы хотите сделать простой «возврат» предыдущего коммита. Но что, если вы хотите отменить изменения, сделанные в версии 1900?Сначала верните рабочую копию в 1943 году.
Во-вторых, проверьте, что должно быть совершено.
В-третьих, зафиксируйте версию 1945.
В-четвертых, посмотрите на новый журнал.
источник
Невозможно «отменить» ревизию, но вы можете вернуть свою рабочую копию в версию 1943 и зафиксировать ее как версию 1945. Версии 1943 и 1945 будут идентичны, что эффективно отменит изменения.
источник
svn dump
и затемsvn load
. Но, конечно, это не должно использоваться в нормальных условиях.$ git revert
. Мне было довольно сложно изучать SVN после того, как я так долго пользовался Git.Следующее сделает пробный прогон, как говорится. HEAD - текущая версия, PREV - предыдущая, затем путь к вашему файлу или подтвержденному элементу:
Если пробный запуск выглядит хорошо, запустите команду без --dry-run
Проверьте изменение в ревизии и повторите. Чтобы найти номера версий, попробуйте:
источник
источник
Алекс, попробуй это: svn merge [WorkingFolderPath] -r 1944: 1943
источник
Хотя приведенные предложения могут работать для некоторых людей, в моем случае это не работает. При выполнении слияния пользователи,
rev 1443
которые обновляются доrev 1445
, по-прежнему синхронизируют все измененные файлы,1444
даже если они равны1443
слиянию. Мне нужно, чтобы конечные пользователи вообще не видели обновления.Если вы хотите полностью скрыть фиксацию, это можно сделать, создав новую ветку с правильной ревизией, а затем поменяв местами ветки. Единственное, вам нужно снять и заново добавить все блокировки.
Это сработало для меня, возможно, это будет полезно для кого-то еще там =)
источник
Это спасло мою жизнь.
У меня была та же проблема, после возврата назад я также не видел старый код. После выполнения вышеуказанной команды я получил чистый код старой версии.
источник
Я попробовал выше, (
svn merge
), и вы правы, это делает Джек. тем не мениекажется, работает, но не постоянно (мой SVN просто показывает старую ревизию). Так что мне пришлось
В моем конкретном случае моя цель
interfaces/AngelInterface.php
. Я внес изменения в файл, зафиксировал их, обновил компьютер сборки, запустил компилятор phpdoc и обнаружил, что мои изменения были пустой тратой времени.svn log interfaces/AngelInterface.php
показывает мое изменение как r22060 и предыдущий коммит в этом файле был r22059. Так что я могуsvn update -r 22059 interfaces/AngelInterface.php
и в итоге получаю код, который снова был в -r22059. Затем :-В качестве альтернативы я мог бы сделать то же самое с каталогом, указав
. -R
вместо негоinterfaces/AngelInterface.php
все вышеперечисленное.источник
Если вы хотите полностью удалить коммиты из истории, вы также можете сделать дамп репо с определенной ревизией, а затем импортировать этот дамп. В частности:
Команда svnrdump выполняет ту же функцию, что и дамп svnadmin, но работает на удаленном репо.
Затем просто импортируйте файл дампа в ваш репозиторий. Это было проверено, чтобы хорошо работать на Beanstalk.
источник