Détails
Récupérer un commit spécifique d'un dépôt Git distant
Existe-t-il un moyen de récupérer un seul commit spécifique d'un dépôt Git distant sans le cloner sur mon PC ? La structure du dépôt distant est absolument identique à celle du mien et il n’y aura donc aucun conflit, mais je n’ai aucune idée de la façon de procéder et je ne veux pas cloner cet énorme dépôt.
Je suis novice en matière de git, y a-t-il un moyen ?
178
3
Vous ne clonez qu'une fois, donc si vous avez déjà un clone du dépôt distant, le fait de le retirer ne téléchargera pas tout à nouveau. Il suffit d'indiquer la branche que vous voulez extraire, ou de récupérer les changements et de vérifier le commit que vous voulez.
L'extraction à partir d'un nouveau dépôt est très économique en bande passante, car elle ne téléchargera que les modifications que vous n'avez pas. Pensez en termes de Git qui fait la bonne chose, avec une charge minimale.
Git stocke tout dans le dossier `.git'. Un commit ne peut pas être récupéré et stocké isolément, il a besoin de tous ses ancêtres. Ils sont interconnectés.
Pour réduire la taille du téléchargement, vous pouvez cependant demander à git de ne récupérer que les objets liés à une branche ou un commit spécifique :
Ceci téléchargera seulement les commits contenus dans la branche distante
branch
(et seulement ceux qui vous manquent), et les stockera dansorigin/branch
. Vous pouvez alors fusionner ou extraire.Vous pouvez aussi spécifier seulement un commit SHA1 :
Ceci ne téléchargera que le commit SHA-1 spécifié 96de5297df870 (et ses ancêtres qui vous manquent), et le stockera dans la branche distante (inexistante)
origin/foo-commit
.J'ai fait un pull sur mon dépôt git :
J'ai permis à git de récupérer tout le code de la branche, puis j'ai fait un reset sur le commit qui m'intéressait.
git reset --hard
J'espère que cela vous aidera.
Vous pouvez simplement récupérer un seul commit d'un repo distant avec
où,
peut être un nom de repo distant (par exemple
origin) ou même une URL de repo distant (par exemple
https://git.foo.com/myrepo.git`)par exemple
après avoir récupéré le commit (et les ancêtres manquants), vous pouvez simplement le checkoutter avec
Notez que cela vous amènera à l'état "detached head" ;.