2011-09-27 9 views
27

Próbuję utworzyć oddział ze zdalnego tagu, ale wydaje się, że nie ma sposobu, aby to zrobić. Kiedy próbujęJak zrobić "git checkout -b <branchname>" ze zdalnego tagu

git checkout -b test origin/deploy 

gdzie pochodzenie jest pilotem i wdrożyć jest tag Chcę sprawdzić, ale ja dostać

fatal: git checkout: updating paths is incompatible with switching branches. 
Did you intend to checkout 'origin/deploy' which can not be resolved as commit? 

UPDATE: Właśnie odkryłem, że

git fetch --all -t 

nie działa poprawnie dla mnie. Chociaż pobiera wszystkie gałęzie, nie pobiera wszystkich tagów, więc po sprawdzeniu wdrożyłem go i stary tag. Teraz mogę wykonać

git fetch --all && git fetch -t 

W ten sposób, gdy tworzę nowy oddział na podstawie znacznika

git checkout -b test deploy 

nowy oddział jest na bieżąco z ostatniego wdrożenia.

Odpowiedz

21

Nie jestem guru git, ale używałem czegoś takiego wcześniej i wydawało się, że pracował w porządku:

git pull (or fetch, just need to make sure you are updated) 
git checkout -b test remotes/origin/deploy 
+0

to nie działa dla mnie (MacOs X, pilot jest hostowany na github) Otrzymuję: fatal: Nie mogę aktualizować ścieżek i przełączać się na gałąź '6.2.3-ga4' w tym samym –

+1

Upewnij się, że oddział, który próbujesz śledzić, istnieje, tzn. najpierw wykonaj pobieranie git, lub git pull, lub git remote update, etc .. –

29

Nie jestem pewien, czy możesz to zrobić bezpośrednio. Jesteś prawdopodobnie skazani robi pobrać a następnie checkoutu:

git fetch origin 
git checkout -b test tag-name 

Nawiasem mówiąc, nie polecam przy użyciu nazwy zmiennych jak „wdrożyć”.

+0

Cóż, teraz ja” m zawsze robi "git fetch --all -t" przed kasą, ale w niektórych przypadkach gałęzie utworzone z tagu wydają się wskazywać na stare wdrożenie zamiast ostatniego. BTW, dlaczego nie miałbyś użyć nazwy "wdrożyć"? – Sergi

+1

@Sergi, tagi mają pozostać niezmienione, ale nazwa taka jak "wdrażanie" oznacza, że ​​będziesz często ją zmieniać. Lepiej jest użyć gałęzi, aby oznaczyć linię rozwoju, która zmienia się wraz z upływem czasu, i mieć swoje tagi w konkretnych wersjach, np. "1.0". –

+0

@Joost, oh, nie martw się. Zawsze tworzę dwa znaczniki podczas wdrażania, jeden z nazwą wersji i inny o nazwie wdrażanie, który jest zastępowany za każdym razem, gdy robię nowe wdrożenie. W ten sposób reszta programistów może odejść od ostatniego dobrego punktu w gałęzi wdrażania. Każdy pomysł, dlaczego czasami dostaję wskazane gałęzie i stare wdrożenia? Czy to możliwe, że "git fetch --all -t" nie działa zgodnie z oczekiwaniami? – Sergi

4

Musisz uruchomić

git pull 
git checkout -b <new-branch-name> remotes/origin/<source-branch-name> 
Powiązane problemy