Git - Quelle est la différence entre pousser.par défaut "matching" et "simple"

j'utilise git depuis un moment maintenant, mais je n'ai jamais eu à mettre en place un nouveau Remote repo moi-même et j'ai été curieux de le faire. J'ai lu des tutoriels et je ne sais pas comment faire pour que "git push" fonctionne.

Si j'utilise simplement git push il me demande de voir une branche par défaut(?) à point? Quelle est la différence entre ces deux options qu'il me fournit?

git config --global push.default matching
git config --global push.default simple

Matching pousse juste ce que j'ai branches sur mon compte local, et s'ils ne correspondent pas je dois alors lui dire manuellement de pousser toutes les nouvelles branches locales que j'ai, correct? Est-ce la meilleure pratique à utiliser ou il est simple mieux?

220
demandé sur Tom Panning 2014-02-18 01:30:50
la source

3 ответов

git push peut pousser toutes les branches ou une seule dépendant de cette configuration:

Pousser toutes les branches

git config --global push.default matching

il poussera toutes les branches vers la branche distante et les fusionnera. Si vous ne voulez pas pousser toutes les branches, vous pouvez pousser la branche courante.

Push seule la branche

git config --global push.default simple

donc, c'est mieux, à mon avis, d'utiliser cette option et de pousser votre branche de code par branche. Il est préférable de pousser les branches manuellement et individuellement.

pour une lecture plus approfondie s'il vous plaît aller à ce post de blog

272
répondu Lalit Sachdeva 2017-02-03 11:01:19
la source

From GIT documentation: Git Docs

ci-dessous donne les informations complètes. En bref, simple ne poussera le current working branch et même alors que s'il a aussi le même nom sur la télécommande. C'est un très bon réglage pour les débutants et deviendra la valeur par défaut dans GIT 2.0

alors que matching poussera toutes les branches locales qui ont le même nom sur la télécommande. (Sans en ce qui concerne votre branche de travail actuelle ). Cela signifie potentiellement beaucoup de branches différentes seront poussés, y compris ceux que vous pourriez même ne pas vouloir partager.

dans mon usage personnel, j'utilise généralement une option différente: current qui pousse la branche de travail actuelle, (parce que je branche toujours pour tout changement). Mais pour un débutant je suggérerais simple

push.par défaut

Définit l'action git poussée devrait prendre si aucune refspec est donné explicitement. Différentes valeurs sont bien adaptées pour des flux de travail; par exemple, dans un flux de travail purement central (c'est-à-dire le fetch source est égale à la destination de poussée), en amont est probablement ce vous voulez. Les valeurs possibles sont:

rien - ne pas pousser quoi que ce soit (erreur) à moins d'un refspec est donné explicitement. Cela est principalement destiné aux personnes qui veulent éviter des erreurs en étant toujours explicite.

current-pousser la branche courante pour mettre à jour une branche avec le même nom sur la fin de réception. Fonctionne à la fois centrale et non-Centrale workflow.

en amont-repousser la branche actuelle vers la branche dont les changements sont généralement intégrés dans la branche actuelle (qui est appelée @{en amont}). Ce mode n'a de sens que si vous poussez le même référentiel que vous utilisez normalement (c.-à-d. flux de travail central).

simple-dans le flux de travail centralisé, travailler comme en amont avec un sécurité pour refuser de pousser si le nom de la branche en amont est différent de la locale.

lorsque vous poussez vers une télécommande qui est différente de la télécommande vous normalement tirer du travail comme actuelles. C'est l'option la plus sûre et est pour les débutants.

ce mode deviendra le mode par défaut de Git 2.0.

matching-push Toutes les branches ayant le même nom sur les deux extrémités. Ce crée le dépôt que vous poussez pour vous souvenir de l'ensemble des branches cela sera repoussé (par exemple si vous poussez toujours maint et master là et pas d'autres branches, le dépôt vers lequel vous poussez aura ces deux branches, et le maint et maître sera poussé y.)

pour utiliser ce mode efficacement, vous devez vous assurer que toutes les branches vous pousseriez dehors sont prêts à être poussés dehors avant de courir git push, comme l' tout l'intérêt de ce mode est de vous permettre de pousser toutes les branches en une seule fois. Si vous avez l'habitude de terminer le travail sur une seule branche et poussez le résultat, tandis que d'autres branches sont inachevées, ce mode est pas pour vous. En outre, ce mode n'est pas adapté pour pousser dans un référentiel central, comme d'autres personnes peuvent ajouter de nouvelles branches, ou mettre à jour la pointe des branches existantes hors de votre contrôle.

c'est actuellement la valeur par défaut, mais Git 2.0 va changer la par défaut simple.

84
répondu UpAndAdam 2014-11-20 19:55:17
la source

Git v2.0 Notes De Mise À Jour

compatibilité Descendante notes

quand git push [$there] ne dit pas quoi pousser, nous avons utilisé le la sémantique traditionnelle "d'appariement" jusqu'à présent (toutes vos branches ont été envoyées la distance tant qu'il y a déjà des branches du même nom là-bas). Dans Git 2.0, la valeur par défaut est maintenant la sémantique "simple" , qui pousse:

  • succursale avec le même nom, et seulement lorsque la branche courante est à intégrer à distance ou

  • uniquement la branche courante de la branche portant le même nom, si vous sont poussant à une télécommande qui n'est pas où vous allez habituellement chercher.

vous pouvez utiliser la variable de configuration " push.par défaut" pour changer ce. Si vous êtes un qui veut continuer à utiliser le "matching" sémantique, vous pouvez définir la variable à "matching", pour exemple. Lisez la documentation pour d'autres possibilités.

lorsque git add -u et git add -A sont exécutés à l'intérieur d'un sous-répertoire sans spécifier les chemins à ajouter sur la ligne de commande fonctionne sur l'arbre entier pour la cohérence avec git commit -a et d'autres (ces commandes utilisées pour le fonctionnement sur la répertoire.) Dites git add -u . ou git add -A . si vous voulez limitez l'opération au répertoire courant.

git add <path> est le même que git add -A <path> maintenant, de sorte que git add dir/ remarquera les chemins que vous avez retirés du répertoire et enregistrez le retrait. Dans les versions plus anciennes de Git, git add <path> utilisé pour ignorer les déménagements. Vous pouvez dire git add --ignore-removal <path> ajouter seulement des chemins ajoutés ou modifiés dans <path> , si vous le souhaitez vraiment.

2
répondu CodeWizard 2016-01-04 19:44:34
la source

Autres questions sur git git-push git-remote git-pull