Avec notre configuration actuelle, vous devez toujours entrer 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 tirer d'une branche dans une autre, en fusionnant accidentellement deux branches avec deux très différentes J'aimerais éviter cela en configurant Git de sorte que le simple fait de taper git pull
tire la branche actuelle dans laquelle vous vous trouvez.
Comment puis-je faire cela?
Vous pouvez créer une branche de suivi. Depuis le livre Git ( http://git-scm.com/book/en/Git-Branching-Remote-Branches ):
Lorsque vous clonez un référentiel, il crée généralement automatiquement une branche
master
qui suitOrigin/master
. C'est pourquoigit Push
etgit pull
fonctionne hors de la boîte sans aucun autre argument. Cependant, vous pouvez configurer d'autres branches de suivi si vous le souhaitez - celles qui ne suivent pas les branches surOrigin
et ne suivent pas la branchemaster
. Le cas simple est l'exemple que vous venez de voir, exécutantgit checkout -b [branch] [remotename]/[branch]
. Si vous avez Git version 1.6.2 ou ultérieure, vous pouvez également utiliser le--track
raccourci:$ 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 fan de taper juste git pull
et obtenir toute la magie.
Vous avez 2 options:
1)git config --global branch.autoSetupMerge always
Cela garantira que si vous extrayez une branche distante ou en créez une nouvelle; les informations de suivi seront traitées automatiquement par git. Ensuite, vous pourrez
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 également définir l'option Push. Je l'ai réglé sur matching
, mais tout le monde a sa préférence là-dessus. (git config --global Push.default matching
)
Plus d'informations: autosetupmerge
est par défaut true
. Lorsqu'il est défini sur true, cela permet à git d'effectuer un suivi lorsque vous extrayez une branche déjà existante sur la télécommande. Par exemple, si vous faites git checkout <branch>
, git gérera les informations de suivi afin que vous puissiez faire git pull
sur cette branche. Cependant , il n'effectuera pas cela sur les branches que vous créez avec -b
option. La définition de autosetupmerge
sur always
garantit que git gère les informations de suivi à tout moment.
2) Lors de l'extraction d'une nouvelle branche, vous devez configurer spécifiquement la branche pour qu'elle tire depuis Origin (aka tracking)
git checkout -b <branch> --track <remote>/<branch>
Je trouve cela moins utile lorsque les branches sont transitoires. Si vous créez rarement une nouvelle branche, vous devriez y aller. Cependant, si vous êtes comme moi, où seule la branche principale est persistante et que chaque fonctionnalité a sa propre nouvelle branche, alors je trouve l'option 1 plus utile .
Notez que vous n'avez pas besoin de faire de configuration git --global
. Vous pouvez simplement écrire --local
là-bas, et avoir ce paramètre spécifique à ce référentiel uniquement.
Cela a fonctionné pour moi:
git branch --set-upstream-to=Origin/branch_name branch_name
Après cela, je peux utiliser la syntaxe suivante:
git checkout branch_name
git pull --rebase
git Push
Si tu as git Push
configuré pour figurer automatiquement le nom de la branche distante, vous pouvez alors passer -u
et il définira également automatiquement la branche de suivi.
Pour configurer git Push pour utiliser une branche distante du même nom:
git config --global Push.default current`
Explication pour le -u
option de 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