Jak sklonować konkretną gałąź Git?

Git clone zachowa się kopiując zdalną bieżącą gałąź roboczą do lokalnej.

Czy jest jakiś sposób na sklonowanie konkretnej gałęzi przeze mnie bez przełączania gałęzi na zdalnym repozytorium?

git clone -b  

Przykład:

git clone -b my-branch git@github.com:user/myproject.git

Dla Git 1.7.10 i późniejszych, dodaj --single-branch aby zapobiec pobieraniu wszystkich gałęzi. Przykład, z gałęzią OpenCV 2.4:

git clone -b opencv-2.4 --single-branch https://github.com/Itseez/opencv.git
Komentarze (10)
Rozwiązanie
git clone --single-branch --branch  

Opcja --single-branch jest ważna od wersji 1.7.10 i późniejszych.

Proszę zobaczyć również inną odpowiedź, którą wielu ludzi preferuje.

Możesz również chcieć się upewnić, że rozumiesz różnicę. A różnica jest taka: wywołując git clone --branch url pobierasz wszystkie gałęzie i sprawdzasz jedną z nich. Może to na przykład oznaczać, że twoje repozytorium ma gałąź dokumentacji lub wiki o rozmiarze 5kB i gałąź danych o rozmiarze 5GB. I za każdym razem, gdy będziesz chciał edytować swoją stronę frontową, możesz skończyć klonując 5GB danych.

Ponownie, nie oznacza to, że git clone --branch nie jest sposobem na osiągnięcie tego, ale po prostu nie zawsze jest to to, co chcesz osiągnąć, kiedy pytasz o klonowanie konkretnej gałęzi.

W czasie pisania oryginalnej odpowiedzi poniżej, git nie miał opcji --single-branch, ale zachowajmy ją dla pełnej satysfakcji wściekłych pszczół.

Odpowiedź tak bardzo nielubiana przez copypasty była taka:

git init
git remote add -t refspec remotename host:/dir.git
git fetch
Komentarze (3)

Utwórz gałąź w lokalnym systemie o tej nazwie, np. powiedzmy, że chcesz uzyskać gałąź o nazwie "branch-05142011".

git branch branch-05142011 origin/branch-05142011

Da ci to wiadomość w stylu - "Oddział branch-05142011 ustawiony do śledzenia zdalnego oddziału branch-05142011 z origin."

Teraz po prostu sprawdź gałąź jak poniżej i masz kod -. git checkout branch-05142011

Komentarze (5)