143 votes

Comment "annuler" un clone --single-branch ?

J'ai cloné un repo en utilisant le

git clone -b <branch name> --single-branch <github url> <target directory>

Cela a cloné UNIQUEMENT cette branche, mais maintenant je veux passer au master et aux autres branches. Y a-t-il un moyen d'annuler la préférence --single-branch, à part effacer et recommencer à cloner le reste du dépôt ?

217voto

henrikhodne Points 3569

Vous pouvez dire à Git de tirer toutes les branches comme ceci :

git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
git fetch origin

Si vous regardez dans .git/config ça ressemblera à quelque chose comme ça :

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = false
[remote "origin"]
    url = https://github.com/owner/repo.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
    rebase = true

Je l'ai comparé à un clone complet, et j'ai vu que la seule différence était le "fetch" sous la rubrique [remote "origin"] .

Note : J'utilise la version 1.8.2 de Git. Les options de configuration peuvent avoir changé si vous utilisez une version antérieure de Git. Si mes commandes ne fonctionnent pas, je vous recommande de regarder dans .git/config pour voir si vous pouvez voir quelque chose de similaire.

3 votes

Je tenais à vous remercier tout particulièrement, car j'ai beaucoup lu et cherché sur Google et je n'ai rien trouvé de tel.

2 votes

Je suis heureux de pouvoir vous aider. Les git est incroyablement puissant (en fait, la plupart des commandes sont implémentées en termes d'autres commandes), et vous pouvez donc faire beaucoup de choses avec lui une fois que vous comprenez comment le référentiel est organisé (en gros, comment la section .git fonctionne).

0 votes

Cela n'a pas fonctionné pour moi - après avoir exécuté les commandes suivantes git show-ref tags échoue toujours.

83voto

Dominik Pawlak Points 9

Si vous voulez ajouter une seule branche, vous pouvez procéder comme suit :

git remote set-branches --add origin [remote-branch]
git fetch origin [remote-branch]:[local-branch]

Fonctionne avec git version 1.9.1

5 votes

Cela permet d'ajouter plusieurs fetch = dans .git/config, très pratique quand on veut passer d'une branche à l'autre sur le serveur distant sans avoir à récupérer tout un tas d'autres branches. Merci de votre compréhension.

20voto

Arno Fiva Points 1239

Pour ajouter une autre branche distante à mon dépôt local qui a été cloné en utilisant --single-branch le texte suivant fonctionne pour moi :

git remote set-branches --add origin [remote-branch]
git fetch
git checkout [remote-branch]

Vous pouvez également utiliser des caractères de substitution pour [remote-branch] par exemple

git remote set-branches --add origin release-1.*
git fetch
git checkout release-1.5

Cela fonctionne avec la version 2.21.1 de git. . Autres réponses suggérant de faire git fetch origin [remote-branch]:[local-branch] n'a pas fonctionné car il crée la branche locale dans un état non suivi. Lorsque l'on exécute git pull il a d'abord essayé de fusionner tous les commits de la branche distante vers ma branche locale une fois de plus.

3 votes

Je reviens pour la deuxième fois sur cette réponse. très utile. merci !

2 votes

La réponse la plus utile

1 votes

J'ai été ici plusieurs fois xd

4voto

Nik Kov Points 2742

Pour moi, ça a marché :

git remote remove origin
git remote add origin https://*<yourPath>*.git
git fetch

1voto

sjakubowski Points 1393

Il suffit d'ajouter le dépôt original comme nouveau dépôt distant et de travailler à partir de là ?

git remote add path/to/myrepo myNewOrigin
git fetch myNewOrigin

Vous pouvez même supprimer votre télécommande "origin" actuelle et renommer "myNewOrigin" en "origin" si vous le souhaitez.

A partir de là, vous pouvez tirer/fusionner/rebaser.

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