Je souhaite télécharger le code source de la branche master-next en utilisant git comme décrit dans le wiki Xilinx .
Jai essayé ceci:
#git clone git://github.com/Xilinx/u-boot-xlnx/tree/master-next.git Initialized empty Git repository in /home/Hannan/master-next/.git/ fatal: remote error: Xilinx/u-boot-xlnx/tree/master-next is not a valid repository name Email [email protected] for help
Même cela a échoué:
# git clone git://github.com/Xilinx/tree/master-next/u-boot-xlnx.git Initialized empty Git repository in /home/Hannan/u-boot-xlnx/.git/ fatal: remote error: Xilinx/tree/master-next/u-boot-xlnx is not a valid repository name Email [email protected] for help
La commande qui fonctionne est:
git clone git://github.com/Xilinx/u-boot-xlnx.git
Mais comment savoir que cela va effectivement récupérer la branche master-next et non la branche principale ? Comment récupérer correctement une branche spécifique en utilisant git?
Jutilise RHEL 6, accessible via PuTTY.
Réponse
Comme le message derreur vous lindique, git clone
attend un dépôt git. Vous pouvez « t » ajouter « le nom dune branche dans le chemin comme ça. Voir branches dans git .
Vous pouvez cloner un branche unique (et son histoire): git clone <url> --branch <branch> --single-branch
Voir git help clone
.
Mais la commande clone que vous avez exécutée vous a donné une copie de tout le référentiel, vous pouvez voir les branches existantes avec git branch
et plus de détails à leur sujet avec git show-branch
.
Basculez vers la branche souhaitée avec git checkout branch-name
.
Les premiers chapitres du Pro Git (disponible en ligne) donne plus de détails sur les commandes de base.
Commentaires
Réponse
Cette commande devrait fonctionner:
$ git fetch origin [branch]
La commande ci-dessus ne récupère que les métadonnées du référentiel distant, ce nest pas le cas merge sources.
Si vous voulez récupérer et fusionner les sources, la commande serait:
$ git pull origin [branch]
Faites attention à la branche où vous exécutez la commande de fusion. Ce sera là que les sources seront fusionnées.
Commentaires
- Votre réponse est techniquement correcte mais je pense quelle pourrait bénéficier dune vérification grammaticale / re écriture.
- cela fonctionne bien merci
Answer
Les dépôts git contiennent toutes les branches ( mais compressé et seulement des différences donc rarement un problème de taille).
Par conséquent, vous pouvez cloner le projet entier comme vous lavez fait avec succès. Cest une manière standard dobtenir un référentiel, même si vous nêtes intéressé que par une seule branche.
La structure .git inclura alors toutes les branches effectuées sur ce référentiel.
Pour utiliser une branche spécifique, faites git checkout [branch_name]
Si la branche existe, les fichiers seront rendus disponibles localement (comme juste cela, les fichiers actuels dans les répertoires du projet).
git status
montrera alors quelle branche est la branche courante, par exemple:
Selon Leiaz, on peut cloner une branche spécifique. En pratique, je « nai jamais fait cela ou vu dautres lutiliser. Sur des recherches plus poussées, je vois quil est relativement nouveau, ajouté dans git 1.7.10 (avril 2012): » git clone a appris –single-branch « option pour limiter le clonage à une seule branche (surprise!); les balises qui ne pointent pas dans lhistorique de la branche ne sont pas récupérées. Par exemple:
git clone -b master-next --single-branch git://github.com/Xilinx/
Ici, pour mon application « linker », je vérifie la branche v3.0.10
Commentaires
- Je ' je ne lai jamais fait non plus, je me souviens avoir vu loption. Je suppose que ' Les s rarement utilisées comme branches supplémentaires sont " bon marché " en taille.
git checkout master-next
après le clonage.