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?
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 anotherLocalBranch
(à myBranch
).
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
Peut-être que vous voulez suivre la branche distante avec une branche locale:
git branch new-local-branch
git branch --set-upstream-to=Origin/remote-branch new-local-branch
git checkout new-local-branch
git pull
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
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)