web-dev-qa-db-fra.com

Git: Fusionner une branche distante localement

J'ai tiré toutes les branches distantes via git fetch --all. Je peux voir la branche que je souhaite fusionner via git branch -a en tant que télécommandes/Origine/nom de la branche. Le problème est que ce n'est pas accessible. Je ne peux pas fusionner ou commander?

170
micahblu

Vous pouvez référencer ces branches de suivi à distance ~ (répertoriées avec git branch -r) avec le nom de leur télécommande.

Vous devez aller chercher la branche distante:

git fetch Origin aRemoteBranch

Si vous souhaitez fusionner l'une de ces branches distantes sur votre branche locale:

git checkout master
git merge Origin/aRemoteBranch

Note 1: Pour un grand dépôt avec un long historique, vous voudrez ajouter l'option --depth=1 lorsque vous utilisez git fetch.

Remarque 2: Ces commandes fonctionnent également avec d'autres pensions à distance afin que vous puissiez configurer une Origin et une upstream si vous travaillez sur une fourche.


Scénario opposé: si vous souhaitez fusionner une de vos branches locales sur une branche distante (par opposition à une branche distante en une branche locale, comme indiqué ci-dessus), vous devez créer une nouvelle branche locale le haut de ladite branche distante en premier:

git checkout -b myBranch Origin/aBranch
git merge anotherLocalBranch

L'idée ici est de fusionner "une de votre branche locale" (ici anotherLocalBranch) à une branche distante (Origin/aBranch).
Pour cela, vous créez d’abord "myBranch" comme représentant cette branche distante: c’est la partie git checkout -b myBranch Origin/aBranch.
Et alors vous pouvez y fusionner anotherLocalBranchmyBranch).

260
VonC

Chaque fois que je fais une fusion, j'entre dans la branche dans laquelle je souhaite fusionner (par exemple, "git checkout branch-i-am-working-in"), puis procédez comme suit:

git merge Origin/branch-i-want-to-merge-from

79
Michael Dautermann

Peut-être que vous voulez suivre la branche distante avec une branche locale:

  1. Créez une nouvelle branche locale: git branch new-local-branch
  2. Configurez cette branche nouvellement créée pour suivre la branche distante: git branch --set-upstream-to=Origin/remote-branch new-local-branch
  3. Entrez dans cette branche: git checkout new-local-branch
  4. Extrayez tout le contenu de la branche distante dans la branche locale: git pull
19
e18r

Récupère d'abord la branche distante de l'Origin.

git fetch Origin remote_branch_name

Fusionner la branche distante vers la branche locale

git merge Origin/remote_branch_name
14
LanilT

Si vous avez déjà récupéré votre branche distante et que vous faites git branch -a,
vous obtenez quelque chose comme:

* 8.0
  xxx
  remotes/Origin/xxx
  remotes/Origin/8.0
  remotes/Origin/HEAD -> Origin/8.0
  remotes/rep_mirror/8.0

Ensuite, vous pouvez utiliser rep_mirror/8.0 pour désigner localement votre branche distante.

Le truc, c'est que remotes/rep_mirror/8.0 ne fonctionne pas mais rep_mirror/8.0.

Donc, une commande comme git merge -m "my msg" rep_mirror/8.0 fait la fusion.

(note: ceci est un commentaire à la réponse de @VonC. Je le mets comme une autre réponse car les blocs de code ne rentrent pas dans le format de commentaire)

2
geekobi