2013-08-20 25 views
42

Wiem, jak powrócić do starszych zatwierdzeń w oddziale Git, ale jak powrócić do stanu oddziału podyktowanego znacznikiem? Wyobrażam sobie coś takiego:Jak powrócić do określonego tagu w Git?

git revert -bytag "Version 1.0 Revision 1.5" 

Czy to możliwe?

+0

Czy chcesz "przewinąć gałąź" (tj. * Usunąć * zatwierdzenia) lub dodać * nowy * commit do bieżącego oddziału, który ustawia gałąź, aby wszystkie pliki były "takie, jakie były w zatwierdzić podany przez ten tag "? – torek

+0

Powinno to być zrobione, chociaż myślę, że wolałbym dodać nowe zatwierdzenie do bieżącego oddziału w sposób, jaki opisujesz –

+0

W takim przypadku użyj metody 'git checkout . 'Z [tej odpowiedzi] (http: // /stackoverflow.com/a/4114122/1256452). – torek

Odpowiedz

72

Znaczniki Git są po prostu wskaźnikami do zatwierdzenia. Używasz ich w taki sam sposób jak HEAD, nazwy gałęzi lub zatwierdzasz sha hashe. Możesz używać tagów za pomocą dowolnego polecenia git, które akceptuje argumenty commit/revision. Możesz wypróbować to za pomocą git rev-parse tagname, aby wyświetlić zatwierdzenie, na które wskazuje.

W twoim przypadku masz co najmniej te dwie alternatywy:

  1. zresetować bieżące oddział do konkretnego tagu:

    git reset --hard tagname 
    
  2. Generowanie powracają popełnić na górze, aby dostać się do stanu tag:

    git revert tag 
    

Może to spowodować pewne konflikty, jeśli masz już zatwierdzenia scalania.

+11

Myślę, że "git revert " przywraca zmiany w oznaczonym zatwierdzeniu, zamiast przywracać kopię roboczą do tej wersji. – Matt

+0

Aby pozbyć się plików nieśledzonych/niewersjonowanych, postępuj zgodnie z https://stackoverflow.com/a/912737/923560 – Abdull

7

Zastosowanie git reset:

git reset --hard "Version 1.0 Revision 1.5" 

(zakładając, że określony ciąg jest tag).

Powiązane problemy