4806 votes

Comment cloner votre télécommande, avec une facilité de programmation vidéo : https://www.youtube.com/watch?v=U5bkC1-KqdU

J'ai une maîtrise et une branche de développement, à la fois poussé à GitHub. J'ai cloné, tiré, et les cheveux, mais je reste incapable d'obtenir autre chose que la branche master de retour.

Je suis sûr que je suis absent quelque chose d'évident, mais j'ai lu le manuel et je me fais pas de joie à tous.

5207voto

emk Points 27772

Tout d'abord, clone distant Git repository et cd :

$ git clone git://example.com/myproject
$ cd myproject

Ensuite, regardez les branches locales dans le référentiel:

$ git branch
* master

Mais il y a d'autres branches se cacher dans votre référentiel! Vous pouvez les consulter à l'aide de l' -a drapeau:

$ git branch -a
* master
  remotes/origin/HEAD
  remotes/origin/master
  remotes/origin/v1.0-stable
  remotes/origin/experimental

Si vous voulez juste prendre un coup d'oeil rapide à l'amont de la branche, vous pouvez le vérifier directement:

$ git checkout origin/experimental

Mais si vous souhaitez travailler sur cette branche, vous aurez besoin de créer un local de suivi de la direction de la

$ git checkout -b experimental origin/experimental

et vous verrez

Branch experimental set up to track remote branch experimental from origin.
Switched to a new branch 'experimental'

Cette dernière ligne lever certaines personnes "Nouvelle direction" - hein? Ce que cela signifie vraiment, c'est une nouvelle branche locale qui reçoit de la direction générale de l'index et crée localement pour vous. La précédente est en fait plus instructif qu'il vous indique que la direction est en train d'être mis en place pour suivre la branche distante, ce qui signifie généralement l'origine/branch_name branche

Maintenant, si vous regardez vos branches locales, c'est ce que vous verrez:

$ git branch
* experimental
  master

Vous pouvez suivre en fait plus d'un dépôt distant à l'aide de git remote.

$ git remote add win32 git://example.com/users/joe/myproject-win32-port
$ git branch -a
* master
  remotes/origin/HEAD
  remotes/origin/master
  remotes/origin/v1.0-stable
  remotes/origin/experimental
  remotes/win32/master
  remotes/win32/new-widgets

À ce stade, les choses deviennent assez fou, alors courez gitk pour voir ce qu'il se passe:

$ gitk --all &

939voto

Gabe Kopley Points 7361

Si vous avez beaucoup de distance branches que vous souhaitez récupérer à la fois, faire:

$ git remote update
$ git pull --all

Maintenant, vous pouvez extraire n'importe quel branche que vous avez besoin, sans toucher le dépôt distant.

561voto

bigfish Points 1547

Cette Bash script m'a aidé:

#!/bin/bash
for branch in `git branch -a | grep remotes | grep -v HEAD | grep -v master`; do
    git branch --track ${branch##*/} $branch
done

Il permettra de créer des branches pour toutes les branches, à l'exception de master (que vous avez probablement obtenu à partir de l'original clone de commande). Je pense que vous pourriez encore besoin de faire un

git fetch --all
git pull --all

pour en être sûr.

516voto

Dave Points 589

À l'aide de l' --miroir option semble copier le suivi à distance des branches correctement. Cependant, il met en place le référentiel comme un dépôt nu, de sorte que vous avez à la remettre en normal référentiel par la suite.

git clone --mirror path/to/original path/to/dest/.git
cd path/to/dest
git config --bool core.bare false

248voto

Nikos C. Points 18676

Vous pouvez facilement passer à une branche sans l'aide de la fantaisie "git checkout -b somebranch origine/somebranch de syntaxe". Il vous suffit de faire:

git checkout somebranch

Git va automatiquement faire la bonne chose:

$ git checkout somebranch
Branch somebranch set up to track remote branch somebranch from origin.
Switched to a new branch 'somebranch'

Git va vérifier si une branche avec le même nom existe dans exactement une distance, et si il ne, il suit de la même manière que si vous aviez spécifié explicitement que c'est une branche distante. Du git-caisse de la page de manuel de la commande Git 1.8.2.1:

Si <branch> n'est pas trouvé, mais il n'existe pas de suivi de la branche dans exactement une distance (de l'appeler <remote>) avec un nom correspondant, la traiter comme équivalent à

$ git checkout -b <branch> --track <remote>/<branch>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X