/ / svn: Jak cofnąć scalanie (bez zatwierdzania)? - svn, scalanie, zatwierdzanie, cofanie

svn: Jak cofnąć scalanie (bez zatwierdzania)? - svn, scalanie, zatwierdzanie, cofanie

Właśnie zrobiłem svn merge scalić zmiany z magistrali do gałęzi:

$ 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
[...]

Ale było zbyt wiele konfliktów, więc chciałbym to cofnąć.

Jednym ze sposobów na to jest popełnienie, a następnie połączenie z powrotem. Ale nie mogę popełnić z powodu konfliktów. Jaki jest najlepszy sposób na cofnięcie w tej sprawie?

Odpowiedzi:

101 dla odpowiedzi № 1

Przywróć rekursywnie z góry kopii roboczej:

svn revert -R .

Będziesz musiał ręcznie usunąć pliki, które zostały dodane. Podobnie jak po powrocie, dodane pliki pozostaną na dysku, ale będą w stanie bez śledzenia ("? Foo")


7 dla odpowiedzi nr 2

Tak długo, jak długo się nie zgadzasz, zawsze możesz cofnąć, aby cofnąć wszystkie zmiany.


2 dla odpowiedzi nr 3

Zmierzyłem się z podobną sytuacją, miałem też inne zmiany, których nie chciałem przegrać. Tak więc, zamiast pełnego rekurencyjnego odwrócenia właśnie svn revert dla sprzecznych przedmiotów było dla mnie dobre

svn revert baz1 baz2

-11 dla odpowiedzi № 4

Po prostu zrób svn resolve we wszystkich konfliktach i zobowiązuj się:

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

Następnie oficjalnie go cofnij, łącząc się z powrotem do miejsca, w którym się znajdował:

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

To wszystko, scalenie zostało cofnięte w katalogu. Teraz też to zatwierdz:

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

Przewaga nad svn revert -R . Metoda polega na tym, że wszystkie dodane pliki zostały poprawnie usunięte.