Il existe plusieurs façons de régler l'amont, en poussant ou sans pousser en même temps.
Si magit-push-current-set-remote-if-missing
est non nil
(par défaut), alors vous verrez quelque chose comme:
Push feature to
p pushRemote, after setting that
u @{upstream}, after setting that
e elsewhere
Pour pousser origin/feature
et définir cela comme amont, appuyez sur upuis sur RETpour accepter le candidat d'achèvement par défaut.
Si magit-push-current-set-remote-if-missing
c'est le cas nil
, vous le verriez plutôt:
Push feature to
e elsewhere
Si vous avez appuyé pmaintenant, on vous dira que l'amont n'est pas configuré (ce qui implique que vous ne pouvez pas pousser vers l'amont s'il n'y a pas d'amont).
Mais si magit-push-current-set-remote-if-missing
c'est le cas nil
, la liste des commutateurs apparaîtra --set-upstream
, vous pouvez donc l'utiliser P - u pcomme vous en avez l'habitude (sauf que le deuxième p est en minuscules). Il y a cependant une complication: après avoir changé la valeur de magit-push-current-set-remote-if-missing
vous devez redémarrer Emacs pour --set-upstream
apparaître ou disparaître.
Enfin , vous pouvez régler l'amont à l' aide du « amont ensemble (et ne rien faire d' autre) » commande: b uorigin/master
RET. Notez que lorsque vous utilisez cette approche, vous ne pouvez sélectionner qu'une branche qui existe déjà.
Mais il serait préférable de configurer le push-remote et de pousser à cela. Pour en savoir plus sur le push-remote et en quoi il diffère de l'amont, consultez le nœud Branching dans le manuel d'informations (la version Web n'a pas encore été mise à jour).
Fondamentalement, la branche en amont est la branche dans laquelle votre branche de fonctionnalité sera finalement fusionnée (en fusionnant ou en rebasant, pas en poussant), très probablement origin/master
. Et la télécommande distante est l'endroit où vous poussez vos branches de fonctionnalités tout en continuant à travailler dessus ou pour que quelqu'un d'autre puisse les fusionner. Si la branche locale est nommée feature
et la push-remote l'est my-fork
, alors pousser cette branche en utilisant P pserait pousser vers my-fork/feature
. (Le "push-to-branch" ne peut pas être configuré, le nom de la branche sur la push-remote est toujours le même que le nom local.)
Donc, alors que votre question était quelque chose comme "comment puis-je pousser vers l'amont, tout en configurant l'amont en même temps", ma recommandation est de ne pas pousser du tout vers l'amont, mais plutôt de pousser vers la télécommande distante.
Pourvu que vous n'ayez pas changé la valeur de magit-push-current-set-remote-if-missing
vous pouvez configurer le push-remote en utilisant P psome-remote
RET. Mais, comme vous poussez probablement toutes les branches de fonctionnalités sur la même télécommande, il est préférable de définir la push-remote une fois pour toutes les branches et d'en finir: bpuis M-pjusqu'à ce que la bonne télécommande soit sélectionnée.
Notez également qu'il ne devrait généralement pas être nécessaire de définir explicitement la branche amont. Lorsque vous créez une nouvelle branche et sélectionnez une branche distante comme point de départ, celle-ci est utilisée comme amont.
Malheureusement, le point de départ est généralement une branche locale et dans ce cas, Git par défaut ne l'utilise pas en amont. Mais cela peut facilement être résolu en exécutant ceci une fois:
git config --global branch.autoSetupMerge always
La valeur par défaut est true
, ce qui signifie "définir le point de départ en amont, à condition qu'il s'agisse d'une branche distante ".
Soit dit en passant, la même chose s'applique à la télécommande push. Cela aussi devrait généralement être défini semi-automatiquement dans les "nouveaux" référentiels. Si vous clonez un référentiel, il vous sera demandé si vous souhaitez l'utiliser origin
comme push-remote. Vous devez répondre «oui», sauf si vous allez ajouter une autre télécommande, par exemple my-fork
, qui devrait être utilisée comme télécommande. Lorsque vous ajoutez une nouvelle télécommande à l'aide de M aet remote.pushDefault
n'est pas encore définie, il vous sera alors demandé si vous souhaitez utiliser la télécommande nouvellement ajoutée comme télécommande push.
Cela peut être configuré à l'aide de magit-clone-set-remote.pushDefault
et magit-remote-add-set-remote.pushDefault
.
Une autre option avancée est magit-branch-prefer-remote-upstream
, par défaut nil
. Si vous le définissez sur t
, puis sélectionnez une branche locale comme point de départ pour une nouvelle branche, alors l'amont du point de départ pourrait (selon certaines règles, voir doc-string) être utilisé comme amont, au lieu de le point de départ lui-même.
<remote>/<branch>
partie a été accidentellement laissée de côté (voir ce commentaire ). En attendant, vous pouvez réglermagit-push-current-set-remote-if-missing
sur zéro.