web-dev-qa-db-fra.com

Comment cloner une branche spécifique de Git?

Git clone se comportera en copiant la branche de travail actuelle distante en local.

Est-il possible de cloner moi-même une branche spécifique sans changer de branche sur le référentiel distant?

2653
Scud
git clone --single-branch --branch <branchname> <remote-repo>

L'option --single-branch est valide à partir de la version 1.7.1 et ultérieure.

S'il vous plaît voir aussi le autre réponse que beaucoup de gens préfèrent.

Vous voudrez peut-être aussi vous assurer de bien comprendre la différence. Et la différence est la suivante: en invoquant git clone --branch <branchname> url, vous récupérez toutes les branches et en extrayez une. Cela peut signifier, par exemple, que votre référentiel possède une documentation de 5 ko ou une branche wiki et une branche de données de 5 Go. Et chaque fois que vous souhaitez modifier votre page d'accueil, vous risquez de cloner 5 Go de données.

Encore une fois, cela ne veut pas dire que git clone --branch n’est pas le moyen de le faire, mais que ce n’est pas toujours ce que vous voulez accomplir, lorsque vous parlez de clonage d'une branche spécifique.

Au moment de la rédaction de la réponse originale ci-dessous, git n’avait pas d’option --single-branch, mais conservons-la pour satisfaire pleinement les abeilles en colère.

La réponse qui a tellement déplu aux copypasters était la suivante:

git init
git remote add -t refspec remotename Host:/dir.git
git fetch
855
git clone -b <branch> <remote_repo>

Exemple:

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

Avec Git 1.7.10 et les versions ultérieures, ajoutez --single-branch pour empêcher l'extraction de toutes les branches. Exemple avec une branche OpenCV 2.4:

git clone -b opencv-2.4 --single-branch https://github.com/Itseez/opencv.git
7403
Jorge E. Cardona

Voici un moyen très simple de le faire :)

Cloner le référentiel

git clone <repository_url>

Lister toutes les branches

git branch -a 

Commander la branche que vous voulez

git checkout <name_of_branch>
247
superlogical

Pour cloner une branche sans récupérer d'autres branches:

mkdir $BRANCH
cd $BRANCH
git init
git remote add -t $BRANCH -f Origin $REMOTE_REPO
git checkout $BRANCH
239
Edmar Miyake
git checkout -b <branch-name> <Origin/branch_name>

par exemple dans mon cas:

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

Donc, pour créer une nouvelle branche basée sur ma branche enum-account-number, je le fais:

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

Après avoir atteint le retour, les événements suivants se produisent:

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

"

90
dkinzer

Créez une branche sur le système local portant ce nom. par exemple. dites que vous voulez que la branche s'appelle "branch-05142011"

git branch branch-05142011 Origin/branch-05142011

Cela vous donnera un message du type: "Branch branch-05142011 configuré pour suivre les branches distantes branch-05142011 depuis Origin".

Maintenant, vérifiez la branche comme ci-dessous et vous avez le code -
git checkout branch-05142011

24
PlanetUnknown
git --branch <branchname> <url>

Mais l'achèvement bash n'obtient pas cette clé: --branch

Prendre plaisir.

16
savgur