Czy chcesz "przewinąć gałąź do tyłu" (tj. Usunąć zatwierdzenia), czy dodać nowe zatwierdzenie do bieżącej gałęzi, które ustawia gałąź tak, że wszystkie pliki są "takie, jakie były w zatwierdzeniu podanym przez ten znacznik"?
torek
Albo powinienem wykonać zadanie, chociaż myślę, że wolałbym raczej dodać nowe zatwierdzenie do bieżącej gałęzi w sposób, który
opisujesz
W takim przypadku użyj git checkout <id> .metody z tej odpowiedzi .
torek
Odpowiedzi:
130
Tagi Git to po prostu wskaźniki do zatwierdzenia. Używasz ich w ten sam sposób, jak robisz HEAD, nazwy gałęzi czy zatwierdzanie haszów sha. Możesz używać znaczników z dowolnym poleceniem git, które akceptuje argumenty zatwierdzenia / rewizji. Możesz spróbować, git rev-parse tagnameaby wyświetlić zatwierdzenie, na które wskazuje.
W twoim przypadku masz co najmniej dwie alternatywy:
Zresetuj bieżącą gałąź do określonego tagu:
git reset --hard tagname
Wygeneruj zatwierdzenie przywracania na górze, aby przejść do stanu tagu:
git revert tag
Może to jednak spowodować pewne konflikty, jeśli masz zatwierdzenia scalające.
Jak powiedział @Matt, zaakceptowana odpowiedź jest po prostu niepoprawna, ponieważ przywraca tylko zmiany w oznaczonym zatwierdzeniu. Najlepszym rozwiązaniem jest użycie wartości
skrótu
Cześć, czy mógłbyś wyjaśnić „generuj zatwierdzenie przywracania na górze, aby przejść do stanu tagu:”? Nie mam pojęcia, co to niestety oznacza.
Próbowałem zaakceptowanego rozwiązania, ale wyskoczył błąd, warning: refname '<tagname>' is ambiguous'
Ale jak stwierdza odpowiedź, tagi zachowują się jak wskaźnik do zatwierdzenia, więc tak jak w przypadku skrótu zatwierdzenia, możesz po prostu pobrać tag. Jedyna różnica polega na tym, że poprzedzasz go tags/:
git checkout <id> .
metody z tej odpowiedzi .Odpowiedzi:
Tagi Git to po prostu wskaźniki do zatwierdzenia. Używasz ich w ten sam sposób, jak robisz HEAD, nazwy gałęzi czy zatwierdzanie haszów sha. Możesz używać znaczników z dowolnym poleceniem git, które akceptuje argumenty zatwierdzenia / rewizji. Możesz spróbować,
git rev-parse tagname
aby wyświetlić zatwierdzenie, na które wskazuje.W twoim przypadku masz co najmniej dwie alternatywy:
Zresetuj bieżącą gałąź do określonego tagu:
Wygeneruj zatwierdzenie przywracania na górze, aby przejść do stanu tagu:
Może to jednak spowodować pewne konflikty, jeśli masz zatwierdzenia scalające.
źródło
Użyj resetowania git :
(zakładając, że określony ciąg jest tagiem).
źródło
Możesz skorzystać z usługi Git Checkout.
Próbowałem zaakceptowanego rozwiązania, ale wyskoczył błąd,
warning: refname '<tagname>' is ambiguous'
Ale jak stwierdza odpowiedź, tagi zachowują się jak wskaźnik do zatwierdzenia, więc tak jak w przypadku skrótu zatwierdzenia, możesz po prostu pobrać tag. Jedyna różnica polega na tym, że poprzedzasz go
tags/
:git checkout tags/<tagname>
źródło