Jak sklonować konkretną gałąź Git? [duplikat]

To pytanie ma już odpowiedź tutaj:

Git clone zachowuje się kopiując zdalną bieżącą działającą gałąź do lokalnej.

Czy Jest jakiś sposób na samodzielne sklonowanie konkretnej gałęzi bez przełączania gałęzi w zdalnym repozytorium?

Author: Steve Chambers, 2009-12-16

7 answers

Zobacz także inną odpowiedź , którą preferuje Wiele osób.

Możesz również chcieć upewnić się, że rozumiesz różnicę, w przeciwieństwie do większości gniewnych komentatorów i downvoterów. A różnica jest taka: wywołując git clone -b branch url pobierasz wszystkie gałęzie i sprawdzasz jedną. Może to na przykład oznaczać, że Twoje repozytorium ma gałąź dokumentacji 5kB lub wiki oraz gałąź danych 5GB. I zawsze, gdy chcesz edytować swoją stronę główną, może skończyć się klonowanie 5GB data.

Ponownie, to nie znaczy git clone -bnie jest to sposób, aby to osiągnąć, po prostu nie jest to zawsze to, co chcesz osiągnąć, kiedy pytasz o klonowanie określonej gałęzi.

Odpowiedź, którą napisałbym dzisiaj, mając na uwadze dzisiejszy git, brzmiałaby

git clone --single-branch -b branch host:/dir.git

W momencie pisania oryginalnej Odpowiedzi poniżej, git nie miał opcji --single-branch, ale zachowajmy ją dla pełnej satysfakcji gniewnych pszczół.

Odpowiedź tak bardzo nielubiana przez copypasterów była to:

git init
git remote add -t refspec remotename host:/dir.git
git fetch
 313
Author: Michael Krelin - hacker,
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-29 11:02:17
git clone -b <branch> <remote_repo>

Przykład:

git clone -b my-branch [email protected]:user/myproject.git

Z Git 1.7.10 i nowszymi, 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
 6787
Author: Jorge E. Cardona,
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-07-11 17:09:13

Aby sklonować gałąź Bez pobierania innych gałęzi:

mkdir $BRANCH
cd $BRANCH
git init
git remote add -t $BRANCH -f origin $REMOTE_REPO
git checkout $BRANCH
 223
Author: Edmar Miyake,
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
2012-11-06 09:01:00

Oto naprawdę prosty sposób na to:)

Klon repozytorium

git clone <repository_url>

Lista wszystkich oddziałów

git branch -a 

Sprawdź gałąź, którą chcesz

git checkout <name_of_branch>
 210
Author: superlogical,
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
2011-07-14 09:42:19
git checkout -b <branch-name> <origin/branch_name>

Na przykład w moim przypadku:

 git branch -a
* master
  origin/HEAD
  origin/enum-account-number
  origin/master
  origin/rel_table_play
  origin/sugarfield_customer_number_show_c

Aby utworzyć nowy oddział na podstawie mojego numeru enum-account-branch wykonuję:

git checkout -b enum-account-number origin/enum-account-number

Po naciśnięciu return następuje:

Branch enum-account-number set up to track remote branch refs/remotes/origin/enum-account-number.
Switched to a new branch "enum-account-number

"

 72
Author: dkinzer,
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
2011-11-15 19:59:19

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

git branch branch-05142011 origin/branch-05142011

Wyświetli komunikat w stylu - " Branch branch-05142011 ustawiony do śledzenia zdalnego branch branch-05142011 from origin."

Teraz wystarczy sprawdzić gałąź jak poniżej i masz kod -
git checkout branch-05142011

 20
Author: PlanetUnknown,
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
2011-05-15 19:20:32
git --branch <branchname> <url>

Ale Bash nie dostaje tego klucza: --branch

Smacznego.
 12
Author: savgur,
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
2011-09-07 12:52:15