2010-11-05 26 views
14

Désolé si cette question a déjà été posée.Configurer une branche locale pour pousser vers une branche spécifique

Am clonage à partir d'un repo nommé "git_lab" qui a une branche nommée "test" Lors du clonage i utilise "-b myname_test" pour créer une branche locale nommée "myname_test" et clone local est nommé "myname_git_lab"

Quand je fais "git pull", il récupère automatiquement et fusionne les changements de "test" à "myname_test", mais pour git push, je dois spécifier le nom de la repo et de la branche.

$> git remote show git_lab

branche locale configurée pour 'git pull': myname_test fusionne avec le test à distance

est-il un moyen où je peux configurer « branche locale configurée pour 'git push' "de sorte que je n'ai pas besoin de spécifier le nom de branche et de repo?

Répondre

26

Il y a deux choses que vous pouvez faire ici.

  • Set push.default à tracking, de sorte qu'il poussera toutes les branches aux branches à distance, ils suivent, pas ceux qu'ils ont le même nom que, puis configurez votre branche avec des informations de suivi approprié. (Par exemple fixé branch.master.remote-origin et branch.master.merge à refs/heads/foo.)

  • poussoir manuellement. git push origin master:foo va pousser votre branche locale master à la branche foo sur la télécommande origin.

Cependant, je dirais que ce que vous voulez vraiment faire est de simplement les noms de la même branche.

(Vous pouvez définir les paramètres de configuration, soit avec git config, par exemple git config push.default tracking, ou en modifiant directement le fichier .git/config.)

+2

"git config push.default tracking" travaillé .... merci une tonne, juste curieux de savoir .... pourquoi avons-nous besoin de spécifier ce paramètre de configuration, je pensais que lorsque nous clonons en utilisant l'option -b tout est réglé. (branch.master.remote et branch.master.merge a été défini après le clone automatiquement) –

+1

@Senthil: Ces réglages sont en effet faits automatiquement, mais le comportement par défaut de push est de pousser * les branches * correspondantes, pas de suivre les branches. Les réglages n'ont donc d'effet que sur l'extraction/la traction, pas sur la poussée. Voir push.default dans la [git config manpage] (http://www.kernel.org/pub/software/scm/git/docs/git-config.html). – Cascabel

+1

qu'en est-il de la branche git --set-upstream? –

0
git checkout --track origin/branchname 

Vous pouvez également modifier le fichier de configuration dans le dossier .git.

+0

Merci, mais la mise en l'URL à distance est de spécifier le dépôt distant pour pousser, comment spécifier la branche distante à pousser? Comme le nom de votre branche locale et le nom de votre branche distante sont différents, le suivi –

+0

devrait vous aider. Edité la réponse. –

+0

Le suivi n'affecte pas le push par défaut. Et si la branche existe déjà, 'git checkout --track' n'est certainement pas la façon de configurer les informations de suivi. – Cascabel