Pobierz konkretny tag za pomocą Git
Próbuję dowiedzieć się, jak mogę pobrać konkretny tag z repozytorium Git - jest to jedna wersja za bieżącą wersją.
Widziałem, że na stronie git był znacznik dla poprzedniej wersji, z nazwą obiektu o długim numerze hex.
Ale nazwa wersji to "Tagged release 1.1.5
" Według strony.
Próbowałem takiego polecenia (ze zmienionymi nazwami):
git clone http://git.abc.net/git/abc.git my_abc
I dostałem coś-katalog, kilka podkatalogów itp.
Jeśli jest całe repozytorium, jak dostać się do wersji, której szukam? Jeśli nie, jak mogę pobrać tę konkretną wersję?
15 answers
$ git clone
Da ci całe repozytorium.
Po klonie możesz wyświetlić znaczniki z $ git tag -l
, a następnie wypisać konkretny tag:
$ git checkout tags/<tag_name>
Jeszcze lepiej, Kasuj i utwórz gałąź (w przeciwnym razie będziesz na gałęzi nazwanej po numerze rewizji tagu):
$ git checkout tags/<tag_name> -b <branch_name>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-25 11:19:45
git clone --branch my_abc http://git.abc.net/git/abc.git
Sklonuje repo i pozostawi Cię na znaczniku, który Cię interesuje.
Dokumentacja dla 1.8.0 git clone stwierdza.
--branch może również pobierać znaczniki i odłączać głowicę od tego commita w wynikowym repozytorium.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-10 12:15:00
Nie jestem ekspertem od Gita, ale myślę, że to powinno zadziałać:
git clone http://git.abc.net/git/abc.git
cd abc
git checkout my_abc
Lub
git clone http://git.abc.net/git/abc.git
cd abc
git checkout -b new_branch my_abc
Druga odmiana ustanawia nową gałąź opartą na znaczniku, co pozwala uniknąć "odłączonej głowy". (Git-checkout manual)
Każdy repo git zawiera całą historię zmian, więc klonowanie repo daje Ci dostęp do najnowszego commita, oraz wszystkiego, co było wcześniej, łącznie z szukanym tagiem.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-20 15:07:01
Do sprawdzenia tylko danego tagu do wdrożenia używam np.:
git clone -b 'v2.0' --single-branch --depth 1 https://github.com/git/git.git
Wydaje się, że jest to najszybszy sposób na Sprawdzenie kodu ze zdalnego repozytorium, jeśli interesuje go tylko najnowszy kod, a nie kompletne repozytorium. W ten sposób przypomina polecenie "svn co".
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-28 02:35:15
Możesz użyć git archive aby pobrać tar ball dla danego tagu lub commit id:
git archive --format=tar --remote=[hostname]:[path to repo] [tag name] > tagged_version.tar
Możesz również wyeksportować archiwum zip znacznika.
-
Tagi Listy:
git tag 0.0.1 0.1.0
-
Eksportuj tag:
git archive -o /tmp/my-repo-0.1.0.zip --prefix=my-repo-0.1.0/ 0.1.0
-
Uwagi:
- nie musisz określać formatu. Zostanie odebrany przez nazwę pliku wyjściowego.
- podanie prefiksu spowoduje eksport kodu do katalogu (jeśli dodasz slash).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-06 00:45:02
Użyj przełącznika --single-branch
( dostępne od Git 1.7.10) . Składnia to:
git clone -b <tag_name> --single-branch <repo_url> [<dest_dir>]
Na przykład:
git clone -b 'v1.9.5' --single-branch https://github.com/git/git.git git-1.9.5
Korzyści: Git będzie odbierał obiekty i (musiał) rozwiązywać delty tylko dla określonej gałęzi / tagu-sprawdzając dokładnie taką samą ilość plików! W zależności od repozytorium źródłowego zaoszczędzi to dużo miejsca na dysku. (Plus, będzie znacznie szybciej.)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-25 06:28:00
Najpierw pobierz wszystkie znaczniki z tego konkretnego pilota
git fetch <remote> 'refs/tags/*:refs/tags/*'
Lub po prostu wpisz
git fetch <remote>
Następnie sprawdź dostępne Tagi
git tag -l
Następnie przełącz się na ten konkretny znacznik używając poniższego polecenia
git checkout tags/<tag_name>
Mam nadzieję, że to ci pomoże!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-13 18:03:10
Sprawdziłam dokumentację Git checkout , ujawniła ona jedną ciekawą rzecz:
Git checkout-b
, gdzie jest nazwą commita w którym założyć nowy oddział; Domyślnie HEAD
Możemy więc podać nazwę znacznika (ponieważ znacznik jest niczym innym jak nazwą commita) jak np.:
> > git checkout-b 1.0. 2_branch 1.0.2
później zmodyfikuj niektóre pliki
> > git push -- tagi
P. S: w Git, nie możesz bezpośrednio zaktualizować znacznika(ponieważ tag jest tylko etykietą do zatwierdzenia), musisz wymeldować ten sam znacznik co gałąź, następnie zatwierdzić do niego, a następnie utworzyć osobny znacznik.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-26 14:39:00
Jeśli Twoje tagi są sortowane za pomocą polecenia linux sort
, Użyj tego:
git tag | sort -n | tail -1
Np. if git tag
zwraca:
v1.0.1
v1.0.2
v1.0.5
v1.0.4
git tag | sort -n | tail -1
wyjście:
v1.0.5
git tag | sort -n | tail -2 | head -1
wyjście:
v1.0.4
(ponieważ poprosiłeś o drugi najnowszy tag)
Aby sprawdzić tag, najpierw Sklonuj repo, a następnie wpisz:
git checkout v1.0.4
..albo jakąkolwiek metkę potrzebujesz.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-25 05:58:04
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ż Nazwę jego tagu, więc ten krok nie jest konieczny dla wszystkich. Wyjście wyglądało tak, choć prawdziwa 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 metkę, którą chciałem i ściągnąłem to i nic więcej w następujący sposób.
git fetch gitserver Fix_110
Otagowałem to na moja lokalna maszyna, nadająca metce tę samą nazwę.
git tag Fix_110 FETCH_HEAD
Nie chciałem sklonować zdalnego repozytorium, jak sugerowali inni, ponieważ projekt, nad którym pracuję, jest duży i chcę rozwijać się w ładnym, czystym środowisku. Wydaje mi się, że jest to bliższe oryginalnym pytaniom "próbuję dowiedzieć się, jak pobrać konkretny TAG" niż rozwiązaniu, które sugeruje klonowanie całego repozytorium. Nie rozumiem po co komu Kopia Windows NT i Windows 8.1 source Kod, jeśli chcą spojrzeć na kod źródłowy DOS 0.1 (na przykład).
Nie chciałem również korzystać z 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 coś wybrać i dodać to do mojego rozwoju.
Prawdopodobnie istnieje sposób na pobranie samego znacznika,a nie tylko kopii commita, który został oznaczony. Sam musiałem oznaczyć pobrane zobowiązanie. EDIT: Ach tak, znalazłem teraz.
git fetch gitserver Fix_110:Fix_110
Gdzie widzisz dwukropek, to jest remote-name:local-name I tutaj są to nazwy znaczników. Działa to bez zakłócania pracującego drzewa itp. Wydaje się, że kopiuje rzeczy z pilota do lokalnej maszyny, więc masz własną kopię.
git fetch gitserver --dry-run Fix_110:Fix_110
Z dodaną opcją --dry-run pozwoli Ci przyjrzeć się temu, co polecenie zrobi, jeśli chcesz zweryfikować to, co chcesz. Więc chyba proste
git fetch gitserver remotetag:localtag
To prawdziwa odpowiedź.
=
A osobna notka o tagach ... Kiedy uruchamiam coś nowego, Zwykle oznaczam puste repozytorium po Git init, ponieważ
git rebase -i XXXXX
Wymaga commita i pojawia się pytanie " w jaki sposób można zmienić dane, które zawierają pierwszą zmianę oprogramowania?"Więc kiedy zaczynam pracę, robię
git init
touch .gitignore
[then add it and commit it, and finally]
git tag EMPTY
Tzn. Utwórz commit przed moją pierwszą prawdziwą zmianą, a następnie użyj
git rebase -i EMPTY
Jeśli chcę zmienić wszystkie moje prace, łącznie z pierwszą zmianą .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-06 10:06:31
Na podstawie odpowiedzi Petera Johnsona stworzyłem sobie fajny pseudonim: {]}
alias gcolt="git checkout \`git tag | sort -V | tail -1\`"
Aka 'Git checkout latest tag'.
Opiera się to na wersji GNU sort, która odpowiednio radzi sobie z sytuacjami, jak wskazał lOranger:
v1.0.1
...
v1.0.9
v1.0.10
Jeśli jesteś na komputerze mac, brew install coreutils
i zamiast tego zadzwoń do gsort.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-08 23:58:38
Try:
git clone -b <name_of_the_tag> <repository_url> <destination>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-21 13:25:06
Jeśli chcesz zobaczyć wersje plików, na które wskazuje znacznik, możesz wykonać polecenie Git, choć spowoduje to, że Twoje repozytorium stanie się "odłączone", co ma złe skutki uboczne:
$ git checkout 2.0.0
Note: checking out '2.0.0'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:
git checkout -b <new-branch-name>
HEAD is now at 99ada87... Merge pull request #89 from schacon/appendix-final
$ git checkout 2.0-beta-0.1
Previous HEAD position was 99ada87... Merge pull request #89 from schacon/appendix-final
HEAD is now at df3f601... add atlas.json and cover image
W stanie "odłączona Głowa", jeśli wprowadzisz zmiany, a następnie utworzysz commit, znacznik pozostanie taki sam, ale twój nowy commit nie będzie należał do żadnej gałęzi i będzie nieosiągalny, z wyjątkiem dokładnego skrótu commita. Tak więc, jeśli chcesz wprowadzić zmiany-powiedz naprawiasz błąd w starszej wersji, na przykład-ogólnie będziesz chciał utworzyć gałąź:
$ git checkout -b version2 v2.0.0
Switched to a new branch 'version2'
Jeśli zrobisz to i stworzysz commit, twoja gałąź version2 będzie nieco inna niż twój tag v2. 0.0, ponieważ będzie się rozwijała wraz z nowymi zmianami, więc bądź ostrożny.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-30 12:19:41
Robię to poprzez github API:
curl -H "Authorization: token %(access_token)s" -sL -o /tmp/repo.tar.gz "http://api.github.com/repos/%(organisation)s/%(repo)s/tarball/%(tag)s" ;\
tar xfz /tmp/repo.tar.gz -C /tmp/repo --strip-components=1 ; \
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-01 00:08:53
Clone z opcją-b pomaga również: git clone https://git01.codeplex.com/aspnetwebstack.git - b v2. 0
Poniższy post wykorzystuje powyższą opcję do pobrania asp.net mvc: http://vijayt.com/Post/Setting-up-aspnet-mvc-for-debugging-in-your-system
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-01 04:40:46