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?
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
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
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>
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
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
"
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
git --branch <branchname> <url>
Mais l'achèvement bash n'obtient pas cette clé: --branch
Prendre plaisir.