Подтвердить что ты не робот

Как отменить слияние (без фиксации)?

Я просто сделал svn merge, чтобы слить изменения из соединительной линии в ветку:

$ svn merge -r328:HEAD file:///home/user/svn/repos/proj/trunk .
--- Merging r388 through r500 into '.':
A    foo
A    bar
   C baz1
   C baz2
U    duh
[...]

Но было слишком много конфликтов, поэтому я хотел бы отменить это.

Один из способов сделать это - зафиксировать и затем слить обратно. Но я не могу совершать из-за конфликтов. Какой лучший способ отменить в этом случае?

4b9b3361

Ответ 1

Восстановить рекурсивно из верхней части рабочей копии:

svn revert -R .

Вам нужно будет вручную удалить файлы, которые были добавлены. Как и после восстановления, добавленные файлы будут оставаться на диске, но они будут находиться в состоянии без отслеживания ( "? Foo" )

Ответ 2

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

Ответ 3

Я столкнулся с такой же ситуацией, также у меня были некоторые другие изменения, которые я не хотел потерять. Итак, вместо полного рекурсивного возврата только svn revert для конфликтующих элементов было хорошо для меня

svn revert baz1 baz2

Ответ 4

Просто сделайте svn resolve для всех конфликтов и выполните:

$ svn resolved baz1
$ svn resolved baz2
$ svn ci -m "oops. bad merge. will revert."
Transmitting file data ......
Committed revision 501.

Затем, официально отмените его, спустившись туда, где он был:

$ svn merge -r501:500
--- Reverse-merging r319 into '.':
[...]

Что это, слияние было отменено в каталоге. Теперь также зафиксируйте это:

$ svn ci -m "bad merge has been undone"
Transmitting file data ......
Committed revision 502.

Преимущество над методом svn revert -R . заключается в том, что файлы, которые были добавлены, удалены должным образом.