git fetch <gitserver> <remotetag>:<localtag>
===================================
Właśnie to zrobiłem. Najpierw upewniłem się, że znam pisownię nazwy tagu.
git ls-remote --tags gitserver; : or origin, whatever your remote is called
To dało mi listę tagów na moim serwerze git do wyboru. Oryginalny plakat znał już jego tag, więc ten krok nie jest konieczny dla wszystkich. Dane wyjściowe wyglądały tak, chociaż rzeczywista lista była dłuższa.
8acb6864d10caa9baf25cc1e4857371efb01f7cd refs/tags/v5.2.2.2
f4ba9d79e3d760f1990c2117187b5010e92e1ea2 refs/tags/v5.2.3.1
8dd05466201b51fcaf4ca85897347d82fcb29518 refs/tags/Fix_109
9b5087090d9077c10ba22d99d5ce90d8a45c50a3 refs/tags/Fix_110
Wybrałem tag, który chciałem, i przyniosłem to, i nic więcej, jak następuje.
git fetch gitserver Fix_110
Następnie oznaczyłem to tagiem na moim komputerze lokalnym, nadając tagowi tę samą nazwę.
git tag Fix_110 FETCH_HEAD
Nie chciałem klonować zdalnego repozytorium, jak sugerowali inni, ponieważ projekt, nad którym pracuję, jest duży i chcę się rozwijać w ładnym, czystym środowisku. Wydaje mi się, że jest to bliższe oryginalnym pytaniom „Próbuję dowiedzieć się, jak pobrać SZCZEGÓŁOWY TAG” niż rozwiązanie sugerujące klonowanie całego repozytorium. Nie rozumiem, dlaczego ktoś powinien mieć kopię kodu źródłowego Windows NT i Windows 8.1, jeśli chce na przykład zobaczyć kod źródłowy DOS 0.1.
Nie chciałem też używać CHECKOUT, jak sugerowali inni. Sprawdziłem oddział i nie chciałem na to wpływać. Moim zamiarem było pobranie oprogramowania, które chciałem, aby móc wybrać coś i dodać to do mojego rozwoju.
Prawdopodobnie istnieje sposób, aby pobrać sam tag, a nie tylko kopię zatwierdzonego tagu. Sam musiałem oznaczyć pobrane zobowiązanie. EDYCJA: Ach tak, znalazłem to teraz.
git fetch gitserver Fix_110:Fix_110
Gdzie widzisz dwukropek, to jest nazwa-zdalna: nazwa-lokalna i tutaj są to nazwy znaczników. Działa to bez naruszania działającego drzewa itp. Wygląda na to, że kopiujesz rzeczy ze zdalnego na lokalny komputer, więc masz własną kopię.
git fetch gitserver --dry-run Fix_110:Fix_110
z dodaną opcją --dry-run pozwoli ci zobaczyć, co zrobi polecenie, jeśli chcesz zweryfikować, co chcesz. Myślę więc, że prosty
git fetch gitserver remotetag:localtag
to prawdziwa odpowiedź.
=
Oddzielna uwaga na temat tagów ... Kiedy zaczynam coś nowego, zwykle odtąd oznaczam puste repozytorium po git init
git rebase -i XXXXX
wymaga zatwierdzenia, a powstaje pytanie „w jaki sposób wyliczyć zmiany obejmujące pierwszą zmianę oprogramowania?” Kiedy zaczynam pracę, robię to
git init
touch .gitignore
[then add it and commit it, and finally]
git tag EMPTY
tzn. utwórz zatwierdzenie przed moją pierwszą prawdziwą zmianą, a następnie użyj
git rebase -i EMPTY
jeśli chcę zmienić podstawę całej mojej pracy, w tym pierwszej zmiany .