J'utilise git depuis un certain temps maintenant, mais je n'ai jamais eu à créer moi-même un nouveau dépôt à distance et j'ai été curieux de le faire. J'ai lu des tutoriels et je ne sais pas comment faire fonctionner "git push".
Si je l'utilise simplement, git push
il me demande de voir une branche par défaut (?) Vers laquelle pointer? Quelle est la différence entre ces deux options qu'il me propose?
git config --global push.default matching
git config --global push.default simple
La correspondance pousse simplement toutes les branches que j'ai sur mon référentiel local, et si elles ne correspondent pas, je dois ensuite lui dire manuellement de pousser toutes les nouvelles branches locales que j'ai, n'est-ce pas? Est-ce la meilleure pratique à utiliser ou la meilleure solution simple?
pull.default
est disponible pour mettre à jour toutes ces branches localementRéponses:
git push
peut pousser toutes les branches ou une seule en fonction de cette configuration:Poussez toutes les branches
Il poussera toutes les branches vers la branche distante et les fusionnerait. Si vous ne voulez pas pousser toutes les branches, vous ne pouvez pousser que la branche actuelle.
Poussez uniquement la branche actuelle
Il est donc préférable, à mon avis, d'utiliser cette option et de pousser votre code branche par branche. Il est préférable de pousser les branches manuellement et individuellement.
la source
push.default current
réponse de @UpAndAdam. Ne le savait pas.simple
n'est plus une option. Dans1.7.8.4
(et plus tôt?), Il en résulte une erreur lorsque vous essayez de pousser. maiscurrent
est toujours disponibletracking
-> pousser la branche actuelle vers sa branche amont.simple
n'a pas de sens, contredit cette réponse et est incorrecte - ce qui rend cette réponse confuse. La page liée indiquesimple
"poussera les branches une par une. Généralement connecté à la branche actuelle." Est-ce à dire que cela va pousser les branches séquentiellement plutôt qu'en parallèle? Que signifie «principalement connecté»? Ensuite, la description desimple
continue pour citer la description dematching
, pour laquelle on pourrait penser que la description dematching
s'applique égalementsimple
. Mais évidemment ce n'est pas vrai.De la documentation GIT: Git Docs
Ci-dessous donne les informations complètes. En bref,
simple
ne poussera lecurrent working branch
et même alors que s'il a également le même nom sur la télécommande. Ceci est un très bon réglage pour les débutants et deviendra la valeur par défautGIT 2.0
Alors que
matching
va pousser toutes les branches localement qui ont le même nom sur la télécommande. (Sans égard à votre branche de travail actuelle). Cela signifie que de nombreuses branches différentes seront potentiellement poussées, y compris celles que vous ne voudrez peut-être même pas partager.Dans mon utilisation personnelle, j'utilise généralement une option différente:
current
qui pousse la branche de travail actuelle (car je branche toujours pour tout changement). Mais pour un débutant, je suggèresimple
la source
git push origin master
cela fera la même chose. Le point des modes et des valeurs par défaut est généralement ce qui se passe lorsque vous dites simplementgit push
et que vous ne lui dites pas une télécommande ou une branche. Quel paramètre par défaut? vous voulez dire le paramètre par défaut de push.default? le paramètre par défaut dans quelle version de git ... si vous ne l'obtenez pas, votre commentaire est extrêmement vague.Notes de publication de Git v2.0
Remarques sur la compatibilité descendante
Quand
git push [$there]
ne dit pas quoi pousser, nous avons utilisé la sémantique traditionnelle de "correspondance" jusqu'à présent (toutes vos branches ont été envoyées à la télécommande 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:uniquement la branche en cours vers la branche avec le même nom, et uniquement lorsque la branche en cours est configurée pour s'intégrer à cette branche distante, si vous passez à la même télécommande que vous récupérez; ou
uniquement la branche actuelle vers la branche du même nom, si vous poussez vers une télécommande qui n'est pas celle d'où vous allez habituellement chercher.
Vous pouvez utiliser la variable de configuration "push.default" pour changer cela. Si vous êtes un ancien qui veut continuer à utiliser la sémantique "correspondante", vous pouvez définir la variable sur "correspondant", par exemple. Lisez la documentation pour d'autres possibilités.
Quand
git add -u
etgit 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, ils opèrent sur toute l'arborescence pour la cohérence avecgit commit -a
et d'autres commandes (ces commandes ne fonctionnaient que sur le sous-répertoire en cours). Ditesgit add -u .
ougit add -A .
si vous souhaitez limiter l'opération au répertoire actuel.git add <path>
est le même quegit add -A <path>
maintenant, donc celagit add dir/
remarquera les chemins que vous avez supprimés du répertoire et enregistrera la suppression. Dans les anciennes versions de Git,git add <path>
utilisé pour ignorer les suppressions. Vous pouvez diregit add --ignore-removal <path>
d'ajouter uniquement des chemins ajoutés ou modifiés<path>
, si vous le souhaitez vraiment.la source