web-dev-qa-db-fra.com

Git pull jusqu'à un commit particulier

Je veux faire un git pull mais seulement jusqu'à un commit spécifique.

 A->B->C->D->E->F (Remote master HEAD)

alors supposez que mon local master HEAD pointe vers B, et je veux tirer jusqu'à E. Que dois-je faire?

Ce n'est pas tirer un commit spécifique, c'est tirer jusqu'à un commit spécifique.

54
Ninja420

git pull n'est rien d'autre que git fetch suivi par git merge. Donc ce que vous pouvez faire c'est

git fetch remote example_branch

git merge <commit_hash>

63
unrealsoul007

Commencez par récupérer les derniers commits du dépôt distant. Cela n'affectera pas votre succursale locale.

git fetch Origin

Ensuite, vérifiez la branche de suivi à distance et faites un journal git pour voir les commits

git checkout Origin/master
git log

Prenez le hash de commit du commit que vous voulez fusionner jusqu'à (ou juste les 5 premiers caractères de celui-ci) et fusionnez-le en master

git checkout master
git merge <commit hash>
14
developerbmw

Si vous fusionnez un commit dans votre branche, vous devriez obtenir tout l'historique entre.

Observer:

 $ git init ./
Inscriptible git vide initialisé dans /Users/dfarrell/git/demo/.git/
$ echo 'a'> lettre 
 $ git ajouter une lettre 
 $ git commit -m 'Lettre initiale' 
 [maître (root-commit) 6e59e76] Lettre initiale 
 1 fichier modifié, 1 insertion (+) 
 Créer le mode 100644 lettre 
 $ echo 'b' >> lettre 
 $ git ajouter une lettre && git commit -m 'Ajouter une lettre' 
 [maître 7126e6d] Ajouter une lettre 
 1 fichier modifié, 1 insertion (+) 
 $ Echo 'c' >> lettre; git ajouter une lettre && git commit -m 'Ajouter une lettre' 
 [maître f2458be] Ajouter une lettre 
 1 fichier modifié, 1 insertion (+) 
 $ echo 'd' >> lettre ; git ajouter une lettre && git commit -m 'Ajouter une lettre' 
 [maître 7f77979] Ajouter une lettre 
 1 fichier modifié, 1 insertion (+) 
 $ echo 'e' >> lettre ; git ajouter une lettre && git commit -m 'Ajouter une lettre' 
 [maître 790eade] Ajouter une lettre 
 1 fichier modifié, 1 insertion (+) 
 $ git log 
 commit 790eade367b0d8ab8146596cd717c25fd895302a 
 Auteur: Dan Farrell 
 Date: jeu 16 juillet 14:21:26 2015-0500 
 
 Lettre additionnelle 
 
 commit 7f77979efd17f277b4be695c559c1383d2fc2f27 
 Auteur: Dan Farrell 
 Date: jeu 16 juil 14:21:24 2015-0500 
 
 Lettre d’ajout 
 
 commit f2458bea7780bf09fe643095dbae95cf97357ccc 
 Auteur: Dan Farrell 
 Date: jeu 16 juil 14:21:19 2015-000 
 
 Lettre additionnelle 
 
 commit 7126e6dcb9c28ac60cb86ae40fb358350d0c5fad 
 Auteur: Dan Farrell 
 Date: jeu 16 juil 14:20:52 2015-0500 
 
 Ajouter lettre 
 
 commit 6e59e7650314112fb80097d7d3803c964b3656f0 
 Auteur: Dan Farrell 
 Date: jeu 16 juillet 14:20:33 2015-0500 
 
 Lettre initiale 
. $ git ch eck 6 6 6 en Français Vous pouvez regarder autour de vous, faire des modifications expérimentales de 
 Et les valider, et vous pouvez supprimer tous les commits que vous avez effectués dans cet état 
 Sans impacter les branches en effectuant une autre vérification. .] Si vous voulez créer une nouvelle branche pour conserver les commits que vous créez, vous pouvez le faire (maintenant ou plus tard) en utilisant -b à nouveau avec la commande checkout. Exemple: 
 
 Git checkout -b nouveau_nom_du_groupe 
 
 HEAD est maintenant à 7126e6d ... Ajout de la lettre 
 $ Git checkout -b B 7126e6dcb9c28c60cb86ae40fb358350. .____.] Passée à une nouvelle couche 'B' 
 $ Git pull référentiel distant. 
 
 Assurez-vous de disposer des droits d'accès appropriés 
 et que le référentiel existe. 
 $ git merge 7f77979efd17f277b4be695c559c1383d2fc2f27 
 Mise à jour 7126e6d .. 7f77979 
 Avance rapide 
 Lettre | 2 ++ 
 1 fichier modifié, 2 insertions (+) 
 $ Lettre cat. 
 A 
 B 
 C 
 D 
1
Daniel Farrell

Vous pouvez également extraire le dernier commit et l'annuler jusqu'à ce que vous le désiriez:

git pull Origin master
git reset --hard HEAD~1

Remplacez master par votre branche souhaitée.

Utilisez le journal git pour voir à quel commit vous voudriez revenir:

git log

Personnellement, cela a mieux fonctionné pour moi.

Fondamentalement, cela extrait la dernière validation, et vous rétablissez manuellement les validations une par une. Utilisez git log afin de voir l'historique de validation.

Bons points: Fonctionne comme annoncé. Vous n'avez pas besoin d'utiliser commit hash ou de tirer des branches inutiles.

Mauvais points: Vous devez annuler les commits par un.

ATTENTION: Valider/conserver toutes vos modifications locales, car avec --hard vous allez les perdre. A utiliser à vos risques et périls!

0
Placeholder