Восстановить файл в репозитории SVN, но сохранить локальную версию - PullRequest
7 голосов
/ 22 июня 2010

Я случайно зафиксировал некоторые изменения в хранилище, которые не были завершены. Я не хочу потерять свои локальные изменения, но я хочу вернуть файл в хранилище туда, где я находился до того, как зафиксировал изменения.

Ответы [ 5 ]

9 голосов
/ 22 июня 2010

Не уверен, что есть функция для этого. Но то, что я бы сделал, это

  1. Возьмите ваш файл и скопируйте его в отдельный каталог [как на рабочем столе].
  2. В вашем SVN-каталоге вернитесь этот конкретный файл в
    предыдущая версия.
  3. Зафиксируйте эту версию, чтобы она стала Версия HEAD.
  4. Получите ваш файл с рабочего стола и скопировать его обратно, и переписать и не проверять
    в.
2 голосов
/ 22 июня 2010

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

0 голосов
/ 04 января 2019

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

  1. Отменить изменения локально
  2. Передать отмененные изменения
  3. Повторить локальные изменения

Давайте предположим, что случайный коммит был $REV (вы можете использовать svnversion или svn log, чтобы узнать). Затем сделайте следующее:

svn merge -c -$REV .
svn ci -m "Revert r$REV"

Последняя строка последней команды дает вам новый номер редакции:

Committed revision $NEW_REV.

Используйте это ниже, чтобы восстановить ваши изменения локально:

svn up # Necessary if your repository has mixed revisions (e.g. due to externals).
svn merge -c $NEW_REV .

( Обычно $NEW_REV должно быть просто $REV + 1.)

Готово.

0 голосов
/ 22 июня 2010

Используйте команду «switch» в SVN.Это просто и стоит знать.

  1. Если это ваш первый раз, скопируйте весь каталог в безопасное место или используйте WinZip (используйте опцию для сохранения структуры каталога).
  2. В вашей частной ветке (у вас есть частная ветка, верно? Если нет, сделайте ее), сделайте копию рассматриваемой ветки, используя обозреватель хранилища.
  3. Сделайте «переключатель» на вашем ПК (называемый «переключатель» в TortoiseSVN), чтобы указать локальную папку на частную ветвь.
  4. Проверьте это.
  5. Вернитесь к исходной ветви.
  6. Вернитесь.
0 голосов
/ 22 июня 2010

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

...