Question Rendre une branche Git existante piste une branche distante?


Je sais comment faire une nouvelle branche qui suit les branches distantes, mais comment est-ce que je fais une branche existante piste une branche à distance?

Je sais que je peux simplement modifier le .git/config fichier, mais il semble qu'il devrait y avoir un moyen plus facile.


3074
2018-02-06 15:14


origine


Réponses:


Étant donné une succursale foo et une télécommande upstream:

À partir de Git 1.8.0:

git branch -u upstream/foo

Ou, si la succursale locale foo n'est pas la branche actuelle:

git branch -u upstream/foo foo

Ou, si vous aimez taper des commandes plus longues, celles-ci sont équivalentes aux deux précédentes:

git branch --set-upstream-to=upstream/foo

git branch --set-upstream-to=upstream/foo foo

À partir de Git 1.7.0:

git branch --set-upstream foo upstream/foo

Remarques:

Toutes les commandes ci-dessus provoqueront une branche locale foo suivre la branche distante foo de la télécommande upstream. L'ancienne syntaxe (1.7.x) est déconseillée en faveur de la nouvelle syntaxe (1.8+). La nouvelle syntaxe est destinée à être plus intuitive et plus facile à retenir.


Voir également: Pourquoi dois-je faire `--set-upstream` tout le temps?


3745
2018-02-18 03:06



Vous pouvez effectuer les opérations suivantes (en supposant que vous soyez extrait sur le serveur principal et que vous souhaitiez l'envoyer à un maître de succursale distant):

Configurez la 'télécommande' si vous ne l'avez pas déjà

git remote add origin ssh://...

Maintenant, configurez maître pour savoir suivre:

git config branch.master.remote origin
git config branch.master.merge refs/heads/master

Et poussez:

git push origin master

206
2018-03-09 08:50



Je fais cela comme un effet secondaire de pousser avec le -u option comme dans

$ git push -u origin branch-name

L'option longue équivalente est --set-upstream.

le git-branch commande comprend aussi --set-upstream, mais son utilisation peut être source de confusion. Version 1.8.0 modifie l'interface.

git branch --set-upstream est obsolète et peut être retiré dans un avenir relativement lointain. git branch [-u|--set-upstream-to] a été introduit avec un ordre d'arguments plus sain.

...

C'était tentant de dire git branch --set-upstream origin/master, mais cela dit à Git de faire en sorte que la branche locale "origin / master" s'intègre à la branche actuellement vérifiée, ce qui est très improbable pour l'utilisateur. L'option est obsolète. utilise le nouveau --set-upstream-to (avec un court et doux -u) option à la place.

Dites que vous avez un local foo branchez et souhaitez qu'il traite la branche par le même nom que son amont. Faites cela avec

$ git branch foo
$ git branch --set-upstream-to=origin/foo

ou juste

$ git branch --set-upstream-to=origin/foo foo

130
2017-10-02 16:24



Vous pourriez trouver le git_remote_branch outil utile. Il offre des commandes simples pour créer, publier, supprimer, suivre et renommer des branches distantes. Une fonctionnalité intéressante est que vous pouvez demander à un grb commande d'expliquer quelles commandes git elle exécuterait.

grb explain create my_branch github
# git_remote_branch version 0.3.0

# List of operations to do to create a new remote branch and track it locally:
git push github master:refs/heads/my_branch
git fetch github
git branch --track my_branch github/my_branch
git checkout my_branch

51
2018-02-06 17:11



En fait pour la réponse acceptée au travail:

git remote add upstream <remote-url>
git fetch upstream
git branch -f --track qa upstream/qa
# OR:
git branch --set-upstream qa upstream/qa

49
2017-11-23 12:08



Je crois que dès que Git 1.5.x vous pourriez faire une succursale locale $BRANCH suivre une branche distante origin/$BRANCH, comme ça.

Étant donné que $BRANCH et origin/$BRANCH existe, et vous n'avez pas encore vérifié $BRANCH (écartez si vous avez), faites:

git branch -f --track $BRANCH origin/$BRANCH

Cela recrée $BRANCH comme une branche de suivi. le -f force la création malgré $BRANCH existant déjà. --track est optionnel si les valeurs par défaut habituelles sont en place (c'est-à-dire, le paramètre git-config branch.autosetupmerge est vrai).

Notez, si origin/$BRANCH n'existe pas encore, vous pouvez le créer en poussant votre local $BRANCH dans le référentiel distant avec:

git push origin $BRANCH

Suivi par la commande précédente pour promouvoir la branche locale dans une branche de suivi.


40
2017-07-28 09:33



1- mettez à jour vos métadonnées locales en utilisant: git fetch --all

enter image description here

2- montrez vos succursales distantes et locales en utilisant: git branche -a , voir la capture d'écran suivante

enter image description here

3- passer à la branche cible, que vous voulez lier avec la télécommande: en utilisant

git checkout branchName

Exemple :

enter image description here 

4- Liez votre branche locale à une branche distante en utilisant:

git branch --set-upstream-à-nameOfRemoteBranch

N.B: nomOfRemoteBranch : copier à partir de la sortie de l'étape 2 "git branch -r"

Exemple d'utilisation:

enter image description here


28
2018-06-06 14:21



Assurez-vous d'exécuter:

git config push.default tracking

être capable de pousser sans problème


22
2017-08-29 21:38



Modification .git/config est probablement le moyen le plus simple et le plus rapide. C'est ce que font les commandes Git pour gérer les branches distantes, de toute façon.

Si vous ne voulez pas déblayer le fichier à la main (et ce n'est pas si difficile), vous pouvez toujours utiliser git config pour le faire ... mais encore une fois, cela va juste éditer le .git/config fichier, de toute façon.

Il existe, bien sûr, des moyens de suivre automatiquement une branche distante lors de l'utilisation git checkout (en passant le --track flag, par exemple), mais ces commandes fonctionnent avec Nouveau branches, pas celles existantes.


21
2018-02-06 15:17



En très court

git branch --set-upstream yourLocalBranchName origin/develop

Cela fera votre yourLocalBranchName suivre la branche distante appelée develop.


16
2017-10-09 07:19



Pour 1.6.x, cela peut être fait en utilisant git_remote_branch outil:

grb track foo upstream

Cela va faire Git faire foo Piste upstream/foo.


14
2018-06-01 02:23