J'ai un référentiel Git local appelé «squelette» que j'utilise pour stocker des squelettes de projet. Il dispose de plusieurs branches, pour différents types de projets:
casey@agave [~/Projects/skeleton] git branch
* master
rails
c
c++
Si je veux vérifier la branche principale pour un nouveau projet, je peux le faire
casey@agave [~/Projects] git clone skeleton new
Initialized empty Git repository in /Users/casey/Projects/new/.git/
et tout est comme je le veux. Plus précisément, la nouvelle branche principale pointe vers la branche principale squelette, et je peux pousser et tirer pour déplacer les modifications apportées à la configuration de base du projet.
Ce qui ne fonctionne pas, cependant, c'est si je veux cloner une autre branche. Je ne peux pas l'obtenir de sorte que je ne tire que la branche que je veux, par exemple la rails
branche, puis le nouveau référentiel a une master
branche qui pousse et tire de la rails
branche du référentiel squelette , par défaut.
Y a-t-il une bonne façon de procéder? Ou, peut-être que ce n'est pas ainsi que Git veut que je structure les choses, et je suis certainement ouvert à cela. Peut-être devrais-je avoir plusieurs référentiels, avec le référentiel squelette Ruby on Rails qui suit le référentiel squelette maître? Et tout projet individuel clonant le référentiel squelette Ruby on Rails.
git branch -a
montre-t-on?git checkout -b newbranch origin/branchiwant
mieux? (sans--track
option)Réponses:
Remarque: le git1.7.10 (avril 2012) vous permet en fait de cloner une seule branche :
Vous pouvez le voir dans
t5500-fetch-pack.sh
:Tobu commente que:
Et depuis Git 1.9.0 (février 2014), les clones peu profonds prennent en charge le transfert de données (push / pull), de sorte que cette option est encore plus utile maintenant.
Voir plus sur " Est-ce que
git clone --depth 1
(clone peu profond) est plus utile qu'il ne le semble? "."Annuler" un clone superficiel est détaillé dans " Convertir un clone superficiel en clone complet " (git 1.8.3+)
Comme le commente Chris :
Avec Git 2.26 (Q1 2020), "
git clone --recurse-submodules --single-branch
" utilise désormais la même option à branche unique lors du clonage des sous-modules .Voir commit 132f600 , commit 4731957 (21 février 2020) par Emily Shaffer (
nasamuffin
) .(Fusionné par Junio C Hamano -
gitster
- en commit b22db26 , 05 mars 2020)la source
git clone <url> --branch <branch> --single-branch <folder>
fonctionne comme un charme.clone --depth 1
le moyen le plus simple d'économiser de la bande passante.--depth 1
sont pas sûrs pour l'utilisateur car ils peuvent souhaiter pousser / tirer avec le nouveau clone.--single-branch
estgit config remote.origin.fetch +refs/heads/*:refs/remotes/origin/*
etgit fetch --unshallow
(git v2.1.4)Une façon consiste à exécuter ce qui suit.
Où
branch_name
est la branche de votre choix et "/ votre / dossier" est le dossier de destination de cette branche. Il est vrai que cela apportera d'autres branches vous donnant la possibilité de fusionner d'avant en arrière.Mise à jour
Maintenant, à partir de Git 1.7.10, vous pouvez maintenant le faire
la source
--single-branch
pour récupérer uniquement l'historique associé à cette branche au lieu de tout l'historique et les balises que contient le référentiel.En utilisant Git version 1.7.3.1 (sous Windows), voici ce que je fais (
$BRANCH
est le nom de la branche que je souhaite extraire et$REMOTE_REPO
est l'URL du référentiel distant à partir duquel je veux cloner):L'avantage de cette approche est que les appels ultérieurs
git pull
(ougit fetch
) ne feront que télécharger la branche demandée.la source
git clone -b $BRANCH $REMOTE_REPO $BRANCH
afik ce sont les mêmes?git clone -b
vous donne toutes les références distantes (toutes les branches et balises distantes) comme legit branch -a
montre. Avec mon script, vous obtenez juste une seule référence.-t $BRANCH
fonctionne même sans-f
, qui serait récupéré immédiatement. Ensuite,git fetch origin
récupérerait etgit checkout $BRANCH
établirait la succursale locale et la caisse. Cela est utile lorsque vous devez configurer la télécommande avant de la récupérer, par exemplegit config remote.origin.uploadpack=/bin/upload-pack
.branch -a
montréorigin/$BRANCH
. Fairegit checkout origin/$BRANCH
corrigé cela.Vous pouvez essayer la voie longue:
Ce que cela signifie:
J'espère que ce sera quelque chose comme ce que vous recherchez.
la source
git branch -r
?git branch -r
ne donne en aucune sortie.Vous pouvez le faire en utilisant la commande ci-dessous:
la source
Depuis la page de manuel de git-clone :
--single-branch
est votre ami pendant le clonage n'oubliez pas d'utiliser avec--branch <branch name>
ou seulement HEAD primaire distant sera cloné (maître par défaut)Rappelez-vous toujours de faire Ctrl+ F5pour lire la nouvelle source, pas celle du cache :-) (Je ne savais donc pas depuis longtemps cette option.)
la source
Mettez simplement l'URL et le nom de la branche.
la source
Clonez une seule branche. C'est le moyen le plus simple:
la source
Pour cloner une branche spécifique, vous pouvez faire:
git clone --branch yourBranchName [email protected]
la source
Pour cloner une branche de Git dont vous n'avez pas la clé publique, utilisez ceci:
la source
Ouvrez le cmd.
cd folder_name
(entrez le chemin où cloner la branche)Une seule commande:
la source
Un peu tard mais je voulais ajouter la solution que j'ai utilisée pour résoudre ce problème. J'ai trouvé la solution ici .
Quoi qu'il en soit, la question semble se poser «comment démarrer un nouveau projet à partir d'une branche d'un autre référentiel?
Pour cela, la solution que j'ai utilisée serait de créer d'abord un nouveau dépôt dans github ou n'importe où. Cela servira de repo à votre nouveau projet.
Sur votre ordinateur local, accédez au projet qui a la branche que vous souhaitez utiliser comme modèle pour votre nouveau projet.
Exécutez la commande:
Ce que cela va faire, c'est pousser old_branch vers new-repo et en faire la branche principale du nouveau repo.
Il vous suffit alors de cloner le nouveau référentiel dans le répertoire local de votre nouveau projet et vous avez un nouveau projet démarré dans l'ancienne branche.
la source
Prenons l'exemple du dépôt de fiole. Il a 3 branches en plus du master. Voyons la branche distante 1.1.x
cloner le dépôt git
cd dans le repo.
récupérer la branche distante 1.1.x
commander la succursale
Vous passerez à la branche 1.1.x et il suivra la branche 1.1.x distante.
la source
Similaire à ce que @ nosaiba-darwish a dit ici: ici
C'est ce que nous faisons habituellement dans notre entreprise:
git clone -b <name_of_branch> --single-branch <git_url> folder_to_clone_locally
la source
Si vous voulez un clone peu profond, vous pouvez le faire avec:
--depth=1
implique--single-branch
.la source
Il existe principalement 2 solutions pour cela:
git clone -b <BRANCH_NAME> <GIT_REMOTE_URL>
Exemple: git clone -b tahir https://github.com/Repository/Project.git
La commande suivante clonera la branche tahir du référentiel git. La commande ci-dessus ne clone que la branche spécifique mais récupère les détails des autres branches. Vous pouvez afficher tous les détails des branches avec la commande.
git branch -a
git clone -b <BRANCH_NAME> --single-branch <GIT_REMOTE_URL>
Exemple: git clone -b tahir --single-branch https://github.com/Repository/Project.git
Maintenant, si vous faites un
git branch -a
, il ne montrera que votre branche unique actuelle que vous avez clonée et pas toutes les branches. Cela dépend donc de vous comment vous le voulez.J'espère que ça aidera quelqu'un un jour !! ...
la source
vous pouvez utiliser cette commande pour créer une seule branche et renommer le dossier si vous souhaitez conserver une branche autonome
exemple
la source
git clone --branch {branch-name} {repo-URI}
Exemple:
git clone --branch dev https://github.com/ann/cleaningmachine.git
{branch-name}
{repo-URI}
la source
Peut se faire en 2 étapes
Clonez le référentiel
git clone <http url>
Commander la succursale que vous souhaitez
git checkout $BranchName
la source