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 № 1Przywróć 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.