svn – jak cofnąć zmiany wykonane w kopii roboczej i już zacommitowane?

Jeśli pracujemy w oparciu o system kontroli wersji Subversion (SVN) Czasem zachodzi potrzeba cofnięcia zmian wykonanych przez nas w projekcie. Zazwyczaj w tym celu służy komenda:

Aby uwzglęnić także pliki ukryte (np. w nazwie rozpoczynające się porzez kropkę „.”) użyjmy takiej komendy:

Cofa wszystkie zmiany wykonane w plikach i przywraca ich do wartości domyślnej. Dodatkowo po wywołaniu wówczas:

Aktualizujemy naszą kopię roboczą do najnowszej wersji. Np. jeśli nasi koledzy w zespole w tym czasie nanieśli zmiany w aplikacji.

Co natomiast w przypadku, gdy poczyniliśmy zmiany w kodzie naszej aplikacji i dodatkowo wykonaliśmy commit tych zmian. I to nie jeden. Jednak te modyfikacje okazały się zbędne i jesteśmy zmuszeni je cofnąć. Jak w takim wypadku przywrócić zmiany do wersji sprzed naszej ingerencji? Posłużymy się tutaj funkcją merge.

Na początek musimy mieć pewność, że żadne pliki w naszej kopii nie czekają na commit i nie są zmodyfikowane. Sprawdzamy to za pomocą komendy:

Jeśli komenda pokazuje pliki usunięte (oznaczenie D) lub zmienione (oznaczenie M) cofamy je przez wyżej pokazaną komendę:

OK. Mamy „czystą” kopię roboczą. Teraz upewnijmy się że mamy ją aktualną. Wywołajmy:

I zanotujmy aktualną rewizję naszej kopii roboczej. Czyli numer:

Jeśli nowe pliki się pojawiły przytępujemy do działania. Najpierw poprzez komendę:

Sprawdźmy historię naszych zmian. Klawiszamy page up i page down ustalmy od której rewizji chcemy przywrócenia zmian. Oczywiście oznaczonych przez naszego użytkownika. Zanotujmy ten numer. Powiedzmy jest to:

Następnie wychodzimy z listingu zmian poprzez kombinację klawiszy

Wywołujemy następnie komendę wg wzorca:

Czyli w naszym przypadku:

Następnie pliki są zmieniane wstecz. Tzn wszystkie poczynione zmiany przez nas (i przez innych!) są cofane, a pliki zmieniane. Jeśli w obrębie tego zakresu doszły nowe pliki do repozytorium – są one usuwane.

Możemy to następnie sprawdzimy naszą kopię roboczą poprzez komendę:

Widzimy oznaczenia plików zmienionych (M) i usuniętych (D).

Kolejną rzeczą którą musimy zrobić to sprawdzenie wszystkich plików po kolei. Oczywiście kiedy pracujemy w zespole i inne osoby mogły nanieść zmiany w plikach który nie możemy cofnąć. Niestety. Musimy po prostu uwzględnić te zmany aby one nie przepadły. Jeśli tylko my wykonaliśmy commit albo jesteśmy jedynymi użytkownikami repozytorium – nie musimy tego robić.

Kiedy już jesteśmy pewni, że stan plików odpowiada temu z przed naszych moduyfikacji mozemy zacommitować nasze zmiany:

Gotowe – mamy wersję plików przed naszych zmian. Oczywiście mimo, że jest ona taka sama jak tamta rewizjauzyskuje kolejny nowy numer w repozytorium.

Share This:

Skomentuj

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *