Comment configurer Git pour tirer automatiquement de la branche courante en utilisant "git pull"?

Avec notre configuration actuelle, vous devez toujours saisir le nom de la branche (c'est à dire: git pull origin feature-branch " lors d'une traction. J'ai déjà fait l'erreur de passer d'une branche à une autre, en fusionnant accidentellement deux branches avec deux versions très différentes. J'aimerais éviter cela en configurant Git de façon à taper git pull va tirer la branche courante, vous êtes dans.

comment je fais ça?

28
demandé sur Brandon Durham 2013-10-09 22:34:28

6 réponses

vous pouvez créer une branche de suivi. Extrait du Livre de Git (http://git-scm.com/book/en/Git-Branching-Remote-Branches):

lorsque vous clonez un dépôt, il crée automatiquement master branche pistes origin/master. C'est pourquoi git push et git pull travailler hors de la boîte avec aucun autre argument. Cependant, vous peut mettre en place d'autres branches de suivi si vous le souhaitez - ceux qui ne suivent pas branches sur origin et de ne pas suivre le master direction. Simple case est l'exemple que vous venez de voir, courir git checkout -b [branch] [remotename]/[branch]. Si vous avez Git version 1.6.2 ou plus récente, vous pouvez aussi utiliser le --track abréviation:

$ git checkout --track origin/serverfix
Branch serverfix set up to track remote branch refs/remotes/origin/serverfix.
Switched to a new branch "serverfix"
12
répondu Karthik Ramachandran 2015-05-27 10:23:54

je suis aussi un fan de taper juste git pull et obtenir toute la magie.

vous avez 2 options:

1)git config --global branch.autoSetupMerge always

cela garantit que si vous vérifiez une branche distante, ou si vous en créez une nouvelle, les informations de suivi seront traitées automatiquement par git. Ensuite, vous serez en mesure de

git clone <some_repo>
git checkout -b <new_branch>
git push
git pull

Notez que pour push sans plus de mots-clés, vous devez définir l'option d'émission. J'ai mis à matching, mais tout le monde a leur préférence. (git config --global push.default matching)

Plus d'info:autosetupmerge par défaut à true. Lorsqu'il est défini à true, cela permet à git d'effectuer un suivi lorsque vous vérifiez une branche déjà existante à la télécommande. Par exemple, si vous n' git checkout <branch>, git va gérer les informations de suivi de sorte que vous pouvez faire git pull tout sur cette branche. cependant, il n'effectuera pas cela sur les branches que vous créez avec -b option. Réglage autosetupmerge pour always veille à ce que git gère les informations de suivi tout le temps.

2) Lors de la vérification d'une nouvelle branche, vous devez configurer la branche de tirer depuis l'origine (aka suivi)

git checkout -b <branch> --track <remote>/<branch>

je trouve cela moins utiles lorsque les branches sont transitoires. Si vous créez rarement une nouvelle branche, vous devriez aller avec cela. Toutefois, si vous êtes comme moi, où seul le maître branche est persistante et chaque caractéristique a sa propre branche toute neuve, alors Je trouve l'option 1 plus utile.

notez que vous n'avez pas besoin de configurer git --global. Vous pouvez simplement écrire --local là, et avoir ce paramètre spécifique à ce dépôt Seulement.

14
répondu batilc 2016-12-26 07:05:32

Cela a fonctionné pour moi:

git branch --set-upstream-to=origin/branch_name branch_name

Après avoir fait cette je peux utiliser la syntaxe suivante:

git checkout branch_name
git pull --rebase
git push
10
répondu Samuel 2015-05-26 22:56:30

Si vous avez git push configuré pour représenter automatiquement le nom de la branche distante, alors vous pouvez passer -u et il définira automatiquement la branche de suivi.

Pour l'installation de git push à l'utilisation d'une branche à distance avec le même nom:

git config --global push.default current`

Explication -u option git help push:

-u, --set-upstream
    For every branch that is up to date or successfully pushed, add
    upstream (tracking) reference, used by argument-less git-pull(1) and
    other commands. For more information, see branch.<name>.merge in
    git-config(1).

en supposant que votre branche actuelle est <branch_name>:

$ git push -u
Branch <branch_name> set up to track remote branch <branch_name> from origin.
Everything up-to-date
3
répondu ハセン 2017-02-28 07:13:01

Aussi, si vous allez dans votre .gitconfig fichier et faire un petit changement, vous pouvez le définir pour supposer automatiquement que vous voulez pousser/tirer de la branche courante dans n'importe quel projet. Donc, ouvrez .gitconfig dans n'importe quel éditeur que vous voulez. Et de trouver le [push] option, définissez default=simple, comme ci-dessous.

[push]
        default = simple
[pull]
        default = simple

comme ça. Changement de traction simple. Les deux sont probablement au courant maintenant. Essentiellement, c'est exactement la même option que j'ai posté précédemment:

git config --global pull.default current

mais j'ai trouvé que c'était une meilleure option. Vous pouvez donc utiliser cette même ligne mais changer currentsimple.

-3
répondu ZzaichikK 2015-10-15 14:00:04

Cette commande doit configurer git pour tirer à la branche courante ..lorsqu'il est exécuté en terminal / iTerm.

git config --global pull.default current

il suffit de remplacer "pull" par "push" pour obtenir le même effet avec "git push".

-6
répondu ZzaichikK 2013-11-30 23:06:04