Mise à jour d'un référentiel local avec les modifications d'un référentiel GitHub


567

J'ai un projet vérifié localement depuis GitHub, et ce référentiel distant a depuis été modifié. Quelle est la commande correcte pour mettre à jour ma copie locale avec les dernières modifications?


26
Il vaut la peine de noter que github a produit un ensemble de guides très instructifs et utiles pour utiliser git et github. Je les ai trouvés inestimables lors de ma première transition vers Git. help.github.com
Mark Embling

Réponses:


791

Probablement:

git pull origin master

28
Il se plaignait: "Vous avez demandé à tirer de la 'source' distante, mais vous n'avez pas spécifié de branche. Comme il ne s'agit pas de la télécommande configurée par défaut pour votre branche actuelle, vous devez spécifier une branche sur la ligne de commande." J'ai donc essayé "$ git pull origin master" et cela a bien fonctionné.
Juan Lanus

8
git pull origin master
Andrzej Rehmann

1
J'ai supprimé certains fichiers et ça ne les ramène pas, une idée?
Aquarius Power

1
faisons-nous un git commit avant d'exécuter cela? chaque fois que j'exécute cette commande, je me retrouve avec 18347213846 fichiers modifiés que je n'ai même pas touchés !!!
Orkun Ozen

5
Je viens d'apprendre à la dure que l'extraction d'une nouvelle branche de référentiel distant ne crée pas une branche de ce nom localement, mais tire plutôt cette branche distante dans la branche locale qui se trouve être extraite. Je ne sais pas comment annuler ce court-circuitage et re-clonage du référentiel. Dans tous les cas, il semble que la branche locale soit indépendante de la branche distante et il faut toujours s'assurer que vous êtes dans la branche locale voulue avant de tirer.
Joe Lapp

87

Cela devrait fonctionner pour chaque dépôt par défaut:

git pull origin master

Si votre branche par défaut est différente de master, vous devrez spécifier le nom de la branche:

git pull origin my_default_branch_name

2
Pas vraiment. fatal: impossible de trouver le maître de référence à distance
Victor Eijkhout

1
@Eijkhout probablt dans votre cas de prise en charge, il n'y a pas de branche principale et une autre branche est définie par défaut
Andrzej Rehmann

62
git fetch [remotename]

Cependant, vous devrez fusionner toutes les modifications dans vos succursales locales. Si vous êtes sur une branche qui suit une branche distante sur Github, alors

git pull

fera d'abord une extraction, puis fusionnera dans la branche suivie


5
Si vous utilisez la git fetchméthode, vous voudrez également récupérer les balises avec git fetch -t. Si vous êtes satisfait des modifications ( git log HEAD..FETCH_HEAD), vous pouvez ensuite les fusionner avec git merge FETCH_HEAD.
Brad Grissom

16

Cette question est très générale et il y a quelques hypothèses que je vais faire pour la simplifier un peu. Nous supposerons que vous souhaitez mettre à jour votre masterbranche.

Si vous n'avez effectué aucune modification localement, vous pouvez utiliser git pullpour supprimer les nouveaux validations et les ajouter à votre master.

git pull origin master

Si vous avez apporté des modifications et que vous souhaitez éviter d'ajouter un nouveau commit de fusion, utilisez git pull --rebase.

git pull --rebase origin master

git pull --rebase fonctionnera même si vous n'avez pas apporté de modifications et est probablement votre meilleur appel.


1
Rebase et les dangers du rebase: atlassian.com/git/tutorials/rewriting-history/git-rebase . Les paragraphes 2 et 3 de la "Comprendre les dangers de rebase" me font vraiment manquer le jeu de commandes de SVN.
WillC

9

Avec un maître d'origine déjà défini, il vous suffit d'utiliser la commande ci-dessous -

git pull "https://github.com/yourUserName/yourRepo.git"
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.