Recherche…


Introduction

Contrairement à l'envoi par Git où vos modifications locales sont envoyées au serveur du référentiel central, tirer avec Git prend le code actuel sur le serveur et le «tire» du serveur du référentiel vers votre ordinateur local. Cette rubrique explique le processus d'extraction du code à partir d'un référentiel à l'aide de Git, ainsi que les situations rencontrées lors de l'extraction d'un code différent dans la copie locale.

Syntaxe

  • git pull [options [<repository> [<refspec> ...]]

Paramètres

Paramètres Détails
--quiet Pas de sortie de texte
-q sténographie pour --quiet
--verbose sortie textuelle verbeuse. Passé pour récupérer et fusionner / rebaser les commandes respectivement.
-v sténographie pour --verbose
--[no-]recurse-submodules[=yes | on-demand | no] Récupère de nouveaux commits pour les sous-modules? (Pas que ce n'est pas un pull / checkout)

Remarques

git pull lance git fetch avec les paramètres donnés et appelle git merge pour fusionner les branches récupérées dans la branche en cours.

Mise à jour avec les modifications locales

Lorsque des modifications locales sont présentes, la commande git pull abandonne la création de rapports:

erreur: vos modifications locales apportées aux fichiers suivants seraient écrasées par la fusion

Pour mettre à jour (comme svn update fait avec subversion), vous pouvez lancer:

git stash
git pull --rebase 
git stash pop

Un moyen pratique pourrait être de définir un alias en utilisant:

2.9
git config --global alias.up '!git stash && git pull --rebase && git stash pop'
2.9
git config --global alias.up 'pull --rebase --autostash'

Ensuite, vous pouvez simplement utiliser:

git up

Tirez le code de la télécommande

git pull

Tirez, écrasez local

git fetch
git reset --hard origin/master

Attention: Bien que les reset --hard aide de la commande reset --hard puissent être récupérées à l'aide de reflog et reset , les modifications non validées sont définitivement supprimées.

Modifiez l' origin et le master sur la télécommande et la branche vers lesquelles vous voulez forcer, respectivement, s'ils sont nommés différemment.

Garder une histoire linéaire en tirant

Rebasing en tirant

Si vous récupérez de nouveaux commits depuis le référentiel distant et que vous avez des modifications locales sur la branche en cours, git fusionne automatiquement la version distante et votre version. Si vous souhaitez réduire le nombre de fusions sur votre succursale, vous pouvez demander à git de redéfinir vos commits sur la version distante de la succursale.

git pull --rebase

En faisant le comportement par défaut

Pour en faire le comportement par défaut pour les branches nouvellement créées, tapez la commande suivante:

git config branch.autosetuprebase always

Pour changer le comportement d'une branche existante, utilisez ceci:

git config branch.BRANCH_NAME.rebase true

Et

git pull --no-rebase

Pour effectuer une traction normale de fusion.


Vérifiez si fast-forwardable

Pour autoriser uniquement la diffusion rapide de la branche locale, vous pouvez utiliser:

git pull --ff-only

Cela affichera une erreur lorsque la branche locale ne peut pas être transférée rapidement et doit être rebasée ou fusionnée avec la branche amont.

Pull, "permission refusée"

Certains problèmes peuvent survenir si le dossier .git dispose pas des droits .git . Résoudre ce problème en définissant le propriétaire du dossier complet .git . Parfois, il arrive qu'un autre utilisateur récupère et modifie les droits du ou des fichiers .git .

Pour résoudre le problème:

chown -R youruser:yourgroup .git/

Extraction de modifications dans un référentiel local

Traction simple

Lorsque vous travaillez sur un référentiel distant (disons GitHub) avec une autre personne, vous souhaiterez à un moment donné partager vos modifications avec eux. Une fois qu'ils ont poussé leurs changements à un dépôt distant, vous pouvez récupérer ces changements en tirant à partir de ce référentiel.

git pull

Le fera, dans la majorité des cas.


Tirez d'une autre télécommande ou branche

Vous pouvez extraire des modifications d'une autre télécommande ou succursale en spécifiant leur nom

git pull origin feature-A

Tirera l' origin formulaire de branche feature-A dans votre agence locale. Notez que vous pouvez fournir directement une URL au lieu d'un nom distant et un nom d'objet tel qu'un commit SHA au lieu d'un nom de branche.


Traction manuelle

Pour imiter le comportement d'un pull git, vous pouvez utiliser git fetch puis git merge

git fetch origin # retrieve objects and update refs from origin
git merge origin/feature-A # actually perform the merge

Cela peut vous donner plus de contrôle et vous permet d'inspecter la branche distante avant de la fusionner. En effet, après avoir récupéré, vous pouvez voir les branches distantes avec git branch -a , et les vérifier avec

git checkout -b local-branch-name origin/feature-A # checkout the remote branch
# inspect the branch, make commits, squash, ammend or whatever
git checkout merging-branches # moving to the destination branch
git merge local-branch-name # performing the merge

Cela peut être très pratique lors du traitement des requêtes d'extraction.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow