Suivi de cette question: si j'ai un clone superficiel, comment récupérer tous les commits plus anciens pour en faire un clone complet?
Suivi de cette question: si j'ai un clone superficiel, comment récupérer tous les commits plus anciens pour en faire un clone complet?
Réponses:
EDIT: git fetch --unshallow
est maintenant une option (merci Jack O'Connor).
Vous pouvez exécuter git fetch --depth=1000000
(en supposant que le référentiel contient moins d'un million de validations).
git fetch --unshallow
existe (comme dans la réponse de @ sdram), cette réponse n'est plus la meilleure.
git fetch --depth=2147483647
est la plus grande profondeur possible à fournir à la commande.
git fetch --unshallow
, mais il ne montre toujours pas toutes les branches.
La commande ci-dessous (git version 1.8.3) convertira le clone superficiel en un clone normal
git fetch --unshallow
Ensuite, pour avoir accès à toutes les branches d'origine (merci @Peter dans les commentaires)
git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
git fetch origin
git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*";
git fetch origin
partir d'une réponse, il devrait y avoir la même chose que l'édition .git / config à la main
git fetch --unshallow --update-head-ok origin '+refs/heads/*:refs/heads/*'
travaillé pour moi
J'avais besoin d'approfondir un dépôt uniquement jusqu'à un commit particulier.
Après avoir lu man git-fetch
, j'ai découvert que l'on ne peut pas spécifier un commit, mais peut spécifier une date:
git fetch --shallow-since=15/11/2012
Pour ceux qui ont besoin d'approfondissement incrémental, une autre man
citation:
--deepen=<depth>
Similaire à --depth, sauf qu'il spécifie le nombre de validations à partir de la limite peu profonde actuelle au lieu de la pointe de chaque historique de branche distante.
Aucun des messages ci-dessus n'a fait l'affaire. J'essaie de travailler avec des balises git à partir d'un clone peu profond.
J'ai d'abord essayé
git fetch --update-shallow
quel genre de travail à mi-chemin. Pourtant, aucun tag disponible!
git fetch --depth=1000000
Cette dernière commande a vraiment récupéré les balises et j'ai finalement pu exécuter
git checkout -b master-v1.1.0 tags/v1.1.0
et en finir avec ça.
HTH
Deux façons d'obtenir un clone peu profond en un clone profond. :
Utilisez les étapes suivantes pour télécharger la branche: (Cela télécharge la copie superficielle de la branche puis la convertit en un clone complet, c'est-à-dire apporte la branche complète et son historique).
une. git clone -b branch http: //git.repository/customSP01.git --depth 1
Cela fait un clone peu profond (avec l'option profondeur) ne récupère qu'une seule branche (à la profondeur demandée).
b. cd customSP01
c. git fetch –depth=100
d. get fetch –depth=500
....
e. git fetch –unshallow
// La commande ci-dessus convertira le clone superficiel en un clone normal. Cependant, cela n'apporte pas toutes les branches:
Ensuite, pour accéder à toutes les succursales.
f. git remote set-branches origin '*'
[Cette étape peut également être effectuée manuellement en modifiant la ligne suivante dans .git / config.
fetch = + refs / heads / master: refs / remotes / origin / master
à (remplacer le maître par *):
chercher = + refs / têtes / *: refs / télécommandes / origine / *]
g. git fetch -v
Cela convertit le clone peu profond en clone profond avec tous les détails de l'historique et de la branche.
Vous pouvez éviter les étapes f et g, si vous utilisez la commande ci-dessous au lieu de la commande présente à l'étape a. pour faire le clone peu profond:
git clone -b branch --no-single-branch http: //git.repository/customSP01.git --depth 1