web-dev-qa-db-fra.com

Récupérer une branche spécifique à l'aide de git

Je veux télécharger le code source de la branche master-next en utilisant git comme décrit dans le wiki Xilinx .

J'ai 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 master ? Comment récupérer correctement une branche spécifique en utilisant git?

J'utilise RHEL 6, accessible via PuTTY.

19
user2799508

Comme le message d'erreur vous l'indique, git clone attend un dépôt git. Vous ne pouvez pas "ajouter" le nom d'une branche dans le chemin comme ça. Voir branches en git .

Vous pouvez cloner une seule branche (et son historique): 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 l'ensemble du 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 livre Pro Git (disponible en ligne) donnent plus de détails sur les commandes de base.

16
Leiaz

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, elle ne fusionne pas les sources.

Si vous souhaitez récupérer et fusionner les sources, la commande serait:

$ git pull Origin [branch]

Soyez prudent avec la branche où vous exécutez la commande de fusion. Ce sera là que les sources seront fusionnées.

13
raulsaeztapia

les référentiels git contiennent toutes les branches (mais compressées et seulement les différences donc rarement un problème de taille).

Par conséquent, vous pouvez cloner l'intégralité du projet comme vous l'avez fait avec succès. Il s'agit d'un moyen standard d'obtenir un référentiel, même si vous n'êtes intéressé que par une seule branche.

La structure .git inclura alors all les branches effectuées sur ce dépôt.

Pour utiliser une branche spécifique, faites git checkout [branch_name] Si la branche existe, les fichiers seront rendus disponibles localement (comme 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 n'ai jamais fait cela ni vu d'autres s'en servir. Sur des recherches plus poussées, je vois qu'il est relativement nouveau, ajouté dans git 1.7.10 (avril 2012): option 'git clone learn --single-branch' pour limiter le clonage à une seule branche (surprise!); les balises qui ne pointent pas dans l'historique de la branche ne sont pas récupérées. Par exemple:

git clone -b master-next --single-branch git://github.com/Xilinx/

enter image description here Ici, pour mon application "linker", je vérifie la branche v3.0.10

4
Michael Durrant