195 votes

Peut-on définir une valeur par défaut de Git pour récupérer toutes les balises lors d'une extraction à distance ?

J'ai actuellement une configuration git à distance comme suit :

[remote "upstream"]
    url = <redacted>
    fetch = +refs/heads/*:refs/remotes/upstream/*

Quand j'émets git pull sur la branche master, toutes les têtes distantes sont récupérées dans remotes/upstream, puis remotes/upstream/master est fusionné dans master. Tous les tags qui peuvent être atteints sont aussi récupérés en même temps, ce qui est très pratique.

J'aimerais git pull pour aller chercher en plus todo à partir de la télécommande, et pas seulement celles qui sont directement accessibles à partir des têtes. J'ai d'abord essayé de définir tagopt == --tags mais il s'est avéré que cela ne permettait de récupérer que les balises, ce qui a tout cassé. (Junio dit même que c'est un horrible erreur de configuration ).

Y a-t-il un moyen de faire git pull récupérer par défaut toutes les balises distantes, en plus des têtes distantes ?

3 votes

Un rappel à moi-même : Assurez-vous que vous avez effectivement poussé la balise en premier (cela ne fonctionne pas automatiquement) : git push origin <tag_name>

0 votes

Utilisation tagopt n'est plus une mauvaise configuration ; à partir de 1.9/2.0 (Q1 2014) ceci permettra de récupérer tous les tags en plus à ce qui est normalement recherché.

368voto

russoue Points 113

Un simple git fetch --tags a fonctionné pour moi.

15 votes

@Fizzix Il faudrait peut-être modifier le titre pour inclure "par défaut". Ce message a répondu à ma question.

3 votes

Cela n'a pas fonctionné pour moi. Je peux voir les balises avec git ls-remote .

0 votes

Il ne répond peut-être pas à la question exacte, mais il répond à la question du titre et c'est ainsi que je l'ai trouvé par le biais d'une recherche sur le web.

113voto

joshtkling Points 3288

Vous devriez pouvoir y parvenir en ajoutant une spécification de référence pour les balises à votre configuration locale. Concrètement :

[remote "upstream"]
    url = <redacted>
    fetch = +refs/heads/*:refs/remotes/upstream/*
    fetch = +refs/tags/*:refs/tags/*

9 votes

Aha, je n'avais jamais réalisé que l'on pouvait avoir plusieurs lignes de récupération, je présumais que la dernière aurait simplement la priorité. C'est très bien et très explicite.

3 votes

Attention à l'utiliser avec git 2.21, voir apple.stackexchange.com/questions/352404/

3 votes

Existe-t-il un moyen d'ajouter le second respect via git <something> au lieu d'éditer directement la configuration locale ? De cette façon, il serait beaucoup plus facile d'indiquer aux développeurs juniors ce qu'il faut faire.

77voto

yucer Points 171

Le site --force L'option est utile pour rafraîchir les balises locales. Principalement si vous avez des balises flottantes :

git fetch --tags --force

L'option git pull a également l'option --force et la description est la même :

Lorsque git fetch est utilisé avec <rbranch>:<lbranch> refspec, il refuse de mise à jour de la branche locale <lbranch>à moins que la branche distante <rbranch>qu'il récupère qu'il récupère est un descendant de <lbranch>. Cette option remplace cette vérification.

mais, selon le doc de --no-tags :

Par défaut, les balises qui pointent vers des objets téléchargés à partir de l'application sont récupérées et stockées localement.

Si cette déclaration par défaut n'est pas une restriction, vous pouvez également essayer

git pull --force

2 votes

git pull --force ne comprend pas git fetch --tags --force

24voto

Vasantha Ganesh K Points 157

Pour moi, la méthode suivante a semblé fonctionner.

git pull --tags

0 votes

En ne récupérant que les tags, vous vouliez probablement dire : ` git fetch --tags`

3 votes

Il existe déjà une réponse avec git fetch --tags . Je voulais donner une autre réponse. pull = fetch + merge. La récupération se produit donc également.

15voto

amulamul Points 372

C'est simple. Faites un

git fetch --all

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X