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 <branch> <remote_repo>
Przykład:
git clone -b my-branch [email protected]: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
git clone --single-branch --branch <branchname> <remote-repo>
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 <branchname> 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
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