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?
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 pistesorigin/master
. C'est pourquoigit push
etgit 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 surorigin
et de ne pas suivre lemaster
direction. Simple case est l'exemple que vous venez de voir, courirgit 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"
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.
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
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
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 current
simple
.
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".