Magit - Comment puis-je extraire une branche distante localement sans taper le nom complet de la branche?

12

J'ai une succursale distante remote-branch-long-name. Lorsque je passe la commande avec la barre terminée, je peux taper remote-branchet origin/remote-branch-long-names'affiche en option. Le problème est que pour extraire cette branche localement, je ne peux pas basculer vers cette branche, je dois basculer vers remote-branch-long-name (without the origin/ prefix), car helm ne fournit pas cette option d'achèvement, je dois taper manuellement le nom de la branche entière.

Y a-t-il une autre fonction que je devrais utiliser pour ce cas d'utilisation ou dois-je pirater une fonction ensemble?

irrégulier
la source

Réponses:

22

Il semble que le problème que vous essayez de résoudre ne soit pas celui que vous rencontrez. Git ne vous permet pas de travailler localement avec des branches distantes (ce que origin/remote-branch-long-namevous voyez n'est qu'une branche de suivi; vous ne pouvez pas travailler directement avec elle) et Magit vous guide vers le flux de travail prévu.

Puisque vous voulez travailler avec, origin/remote-branch-long-namevous devriez probablement exécuter magit-branch-and-checkout( b c). Sélectionnez origin/remote-branch-long-nameet il vous demandera un nom de branche locale et sera par défaut "nom de branche longue distante". Cela vous donne la nécessité pour la succursale locale d'apporter vos modifications. Lorsque vous avez terminé vos modifications et que vous appuyez origin/remote-branch-long-namedessus, la branche de suivi à distance est mise à jour.

Vous pouvez avoir des branches locales avec une barre oblique, mais l'utilisation d'un nom distant dans un nom de branche locale peut rendre les choses très confuses. Git se souvient de la distance à laquelle une branche locale a été extraite, vous n'avez donc pas besoin de la suivre vous-même.

Pour une explication plus complète que ma réponse ici (!) Vous trouverez cette page un bon aperçu des télécommandes.

ebpa
la source
7
Je pense que la déconnexion ici est que le flux Magit est différent du flux Git. Si vous exécutez git checkout foo, et foon'est pas une branche, mais l' origin/fooest, git créera une nouvelle branche fooet la configurera pour suivre origin/foo. Donc, git vous apprend à penser "Je viens de commander foo, et git fait tout ce qui est nécessaire". Mais cela ne fonctionne pas avec magit; courir magit-branch-and-checkoutest la voie à suivre.
zck
4

Depuis magit v2.12.0, il existe une commande magit-branch-checkout, liée à b l(branche locale Checkout), qui fait exactement ce que vous voulez. Voir le doc pour plus de détails.

Emoses
la source