240 votes

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 repo Git distant sans le cloner sur mon PC ? La structure du repo distant est absolument identique à celle du mien et donc il n'y aura pas de conflits mais je n'ai aucune idée de comment faire 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 ?

1 votes

Votre repo existant est-il déjà un clone du repo distant, ou est-il complètement différent ?

0 votes

Eh bien, le dépôt est le noyau source de Linux, et c'est à peu près la même chose.

0 votes

Alors, c'est un clone ou pas ?

11voto

Alex Mills Points 635

C'est ce qui fonctionne le mieux :

git fetch origin specific_commit
git checkout -b temp FETCH_HEAD

nommez "temp" comme vous voulez... cette branche pourrait être orpheline cependant

0 votes

Clairement PAS avec les anciennes versions de git comme 1.8.x

1voto

Hubbitus Points 103

Je pense que "git ls-remote" ( http://git-scm.com/docs/git-ls-remote ) devrait faire ce que vous voulez. Sans forcer pour aller chercher ou tirer.

1voto

surya deepak Points 29

Finalement, j'ai trouvé un moyen de cloner un commit spécifique en utilisant git cherry-pick . En supposant que vous n'avez pas de dépôt dans le local et que vous tirez un commit spécifique du distant,

1) créer un référentiel vide en local et git init

2) git remote add origin " url du référentiel "

3) git fetch origin [cela ne déplacera pas vos fichiers vers votre espace de travail local, sauf si vous fusionnez].

4) git cherry-pick " Enter-long-commit-hash-that-you-need "

De cette façon, vous n'aurez que les fichiers de ce commit spécifique dans votre local.

Enter-long-commit-hash :

Vous pouvez l'obtenir en utilisant -> git log --pretty=oneline

0voto

Noam Manos Points 145

Si le commit demandé est dans les pull requests du repo distant, vous pouvez l'obtenir par son ID :

# Add the remote repo path, let's call it 'upstream':
git remote add upstream https://github.com/repo/project.git

# checkout the pull ID, for example ID '60':
git fetch upstream pull/60/head && git checkout FETCH_HEAD

-2voto

Eren Points 17

Dans un projet, nous avons eu un problème qui nous a obligés à revenir à un certain commit. Nous l'avons fait avec la commande suivante avec succès :

git reset --hard <commitID>

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