Question Git chercher une branche distante


Mon collègue et moi travaillons sur le même référentiel que nous avons divisé en deux branches, chacune techniquement parlant pour des projets différents, mais ils ont des similarités, nous allons donc parfois vouloir revenir au * master de la branche.

Cependant, j'ai la branche. Ma question est la suivante: comment mon collègue peut-il tirer cette branche spécifiquement? UNE git clone du repo ne semble pas créer les branches localement pour lui, bien que je puisse les voir vivre en désordre après une poussée de ma part.

Aussi, quand j'ai fait la branche que j'ai faite à l'origine -b checkout. Vous ne savez pas si cela fait une grande différence?

iMac:test_solar dave$ git branch -r
origin/HEAD -> origin/master
origin/daves_branch
origin/discover
origin/master

git fetch origin discover
git checkout discover

Ce sont les commandes que j'ai exécutées. Mais ça ne marche vraiment pas. Je veux être en mesure de vérifier cette branche et ensuite pousser et commenter seulement les changements de branches de divers collaborateurs ou postes de travail.


1597
2018-03-02 17:06


origine


Réponses:


Vous devez créer une branche locale qui suit une branche distante. La commande suivante va créer une branche locale nommée daves_branch, suivi de la branche distante origine / daves_branch. Lorsque vous appuyez sur vos modifications, la branche distante sera mise à jour.

Pour la plupart des versions de git:

git checkout --track origin/daves_branch

--track est un raccourci pour git checkout -b [branch] [remotename]/[branch] où [remotename] est origine dans ce cas et [branche] est deux fois la même chose, daves_branch dans ce cas.

Pour git 1.5.6.5, vous aviez besoin de ceci:

git checkout --track -b daves_branch origin/daves_branch

Pour git 1.7.2.3 et supérieur c'est assez (peut-être commencé plus tôt mais c'est la première confirmation que je pourrais trouver rapidement):

git checkout daves_branch

Notez qu'avec les versions git récentes, cette commande ne créera pas de branche locale et vous mettra dans un état 'HEAD détaché'. Si vous voulez une succursale locale, utilisez le --track option. Tous les détails ici: http://git-scm.com/book/fr/v2/Git-Branching-Remote-Branches#Tracking-Branches


2215
2018-03-02 17:45



j'ai utilisé fetch suivi par checkout ...

git fetch <remote> <rbranch>:<lbranch> 
git checkout <lbranch>

... où <rbranch> est la branche distante ou source ref et <lbranch> est le encore inexistant succursale locale ou destination ref vous voulez suivre et que vous voulez probablement nommer le même que la branche distante ou la référence de la source. Ceci est expliqué sous options dans l'explication de <refspec>.

Git est si intelligent, il complète automatiquement la première commande si je languette après les premières lettres de la branche distante. IE: Je n'ai même pas besoin de nommer la branche locale, Git copie automatiquement le nom de la branche distante pour moi. Merci Git!

Aussi comme la réponse dans ce post SO similaire montre, si vous ne nommez pas la branche locale dans fetch, vous pouvez toujours le créer lorsque vous le consultez en utilisant le -b drapeau. C'EST À DIRE:  git fetch <remote> <branch> suivi par git checkout -b <branch> <remote>/<branch> fait exactement la même chose que ma réponse initiale. Et évidemment si votre repo a seulement un à distance, alors vous pouvez simplement faire git checkout <branch> après fetch et il va créer une branche locale pour vous. PAR EXEMPLE: Vous venez de cloner un repo et souhaitez vérifier les branches supplémentaires de la télécommande.

Je crois que certains de la documentation pour fetch peut avoir été copié verbatim de pull. En particulier la section sur <refspec> dans options est le même. Cependant, je ne crois pas que fetch sera jamais merge, de sorte que si vous laissez le côté destination du côlon vide fetch  ne devrait rien faire.

Notez que git fetch <remote> <refspec> est court pour git fetch <remote> <refspec>: qui ne ferait donc rien, mais git fetch <remote> <tag> est le même que git fetch <remote> <tag>:<tag> qui devrait copier la télécommande <tag> localement.

Je suppose que cela n'est utile que si vous voulez copier une branche distante localement, mais pas nécessairement vérifier tout de suite. Sinon, je voudrais maintenant utiliser la réponse acceptée ci-dessus, qui est expliqué en détail dans la première section du description de la caisse et plus tard dans le options section sous l'explication de --track, puisque c'est un 1-liner. Bien... sorte de 1-liner, parce que vous le feriez encore avoir à courir git fetch <remote> premier.

FYI: L'ordre du <refspecs> (source: destination) explique la méthode bizarre de pré Git-1.7 pour supprimer des branches distantes. IE: ne rien envoyer dans la référence de destination.


740
2018-04-19 00:45



Si vous essayez de "commander" une nouvelle branche distante (qui n'existe que sur la télécommande, mais pas localement), voici ce dont vous aurez besoin:

git fetch origin
git checkout --track origin/<remote_branch_name>

Cela suppose que vous voulez aller chercher origine. Si non, remplacez origine par votre éloigné prénom.


270
2018-05-17 12:14



Pour vérifier myBranch qui existe à distance et pas un localement - Cela a fonctionné pour moi:

git fetch --all
git checkout myBranch

J'ai reçu ce message:

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

88
2017-11-12 03:36



Utilisation git branch -a (branches locales et distantes) ou git branch -r (seulement les branches à distance) pour voir toutes les télécommandes et leurs branches. Vous pouvez ensuite faire un git checkout -t remotes/repo/branch à la télécommande et créer une branche locale.

Il y a aussi une commande git ls-remote pour voir toutes les références et balises de cette télécommande.


37
2018-03-02 17:16



Le titre et la question sont confus:

  • Git chercher une branche distante
  • Comment mon collègue peut-il tirer cette branche spécifiquement?

Si la question est comment puis-je faire fonctionner une branche distante ou comment passer une caisse distante, une solution plus simple est:

Avec git (> = 1.6.6), vous pouvez utiliser:

git checkout <branch_name>

Si local <branch_name> n'est pas trouvé mais il existe une branche de suivi dans exactement une télécommande avec un nom correspondant, traiter comme équivalent à:

git checkout -b <branch_name> --track <remote>/<branch_name>

voir la documentation pour git checkout

Pour ton ami:

$ git checkout discover
Branch discover set up to track remote branch discover
Switched to a new branch 'discover'

33
2018-03-31 10:48



git checkout -b serverfix origin/serverfix

C'est une opération assez courante que git fournit le raccourci --track:

git checkout --track origin/serverfix

En fait, c'est si courant qu'il y a même un raccourci pour ce raccourci. Si le nom de branche que vous essayez d'archiver (a) n'existe pas et que (b) correspond exactement à un nom sur une seule télécommande, Git créera une branche de suivi pour vous:

git checkout serverfix

Pour configurer une branche locale avec un nom différent de la branche distante, vous pouvez facilement utiliser la première version avec un nom de branche locale différent:

git checkout -b sf origin/serverfix

Maintenant, votre branche locale sf va automatiquement tirer d'origine / serverfix.

La source: Pro Git 2nd Edition, écrit par Scott Chacon et Ben Straub(coupé pour plus de lisibilité)


24
2018-03-18 00:21



git fetch

git branch -r

git checkout <branch_name>

12
2017-12-04 20:53



Avec cette simple commande:

git checkout -b 'your_branch' origin/'remote branch'

11
2018-05-18 09:38



Vous pouvez aller chercher et extraire la branche distante en une fois aussi:

git fetch && git checkout the-branch-name

10
2018-03-25 06:43



j'ai tapé $

git checkout <branch_name>

et j'ai

Branch <branch_name> set up to track remote branch <branch_name> from origin.
Switched to a new branch '<branch_name>'

9
2017-10-17 00:07