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&#8217y aura donc aucun conflit, mais je n&#8217ai 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 ?

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 :

git fetch origin refs/heads/branch:refs/remotes/origin/branch

Ceci téléchargera seulement les commits contenus dans la branche distante branch (et seulement ceux qui vous manquent), et les stockera dans origin/branch. Vous pouvez alors fusionner ou extraire.

Vous pouvez aussi spécifier seulement un commit SHA1 :

git fetch origin 96de5297df870:refs/remotes/origin/foo-commit

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.

Commentaires (9)

J'ai fait un pull sur mon dépôt git :

git pull --rebase  

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.

Commentaires (3)

Vous pouvez simplement récupérer un seul commit d'un repo distant avec

git fetch  

où,

  • `peut être un nom de repo distant (par exempleorigin) ou même une URL de repo distant (par exemplehttps://git.foo.com/myrepo.git`)
  • `` peut être le commit SHA1

par exemple

git fetch https://git.foo.com/myrepo.git 0a071603d87e0b89738599c160583a19a6d95545

après avoir récupéré le commit (et les ancêtres manquants), vous pouvez simplement le checkoutter avec

git checkout FETCH_HEAD

Notez que cela vous amènera à l'état "detached head&quot ;.

Commentaires (9)