la commande git fetch
télécharge les commits, les fichiers et les références d’un dépôt distant dans votre dépôt local. Aller chercher Est ce que vous faites quand vous voulez voir ce sur quoi tout le monde a travaillé. Il est similaire à svn update
en ce sens qu’il vous permet de voir comment l’historique central a progressé, mais il ne vous oblige pas à fusionner les modifications dans votre référentiel. Git isole le contenu récupéré à partir du contenu local existant; cela n’a absolument aucun effet sur votre travail de développement local., Le contenu récupéré doit être extrait explicitement à l’aide de la commande git checkout
. Cela fait de la récupération un moyen sûr d’examiner les commits avant de les intégrer à votre référentiel local.
lors du téléchargement de contenu à partir d’un dépôt distant, les commandesgit pull
Etgit fetch
sont disponibles pour accomplir la tâche. Vous pouvez considérer git fetch
la version « sûre » des deux commandes. Il téléchargera le contenu distant mais ne mettra pas à jour l’état de fonctionnement de votre dépôt local, laissant votre travail actuel intact., git pull
est l’alternative la plus agressive; il téléchargera le contenu distant pour la branche locale active et exécutera immédiatement git merge
pour créer un commit de fusion pour le nouveau contenu distant. Si vous avez des modifications en cours, cela provoquera des conflits et lancera le flux de résolution des conflits de fusion.
comment git fetch fonctionne avec des branches distantes
pour mieux comprendre comment fonctionnegit fetch
discutons comment Git organise et stocke les commits., Dans les coulisses, dans le répertoire ./.git/objects
du dépôt, Git stocke tous les commits, locaux et distants. Git maintient les commits de branche distants et locaux distinctement séparés grâce à l’utilisation de références de branche. Les références pour les branches locales sont stockées dans le ./.git/refs/heads/
. L’exécution de la commandegit branch
affichera une liste des références de branche locales. Voici un exemple de sortiegit branch
avec quelques noms de branche de démonstration.,
git branch
master
feature1
debug2
l’Examen du contenu de la balise /.git/refs/heads/
répertoire révéler de production similaire.
ls ./.git/refs/heads/
master
feature1
debug2
les branches distantes sont comme les branches locales, sauf qu’elles correspondent aux commits du référentiel de quelqu’un d’autre. Les branches distantes sont préfixées par la télécommande à laquelle elles appartiennent afin de ne pas les mélanger avec des branches locales. Comme les branches locales, Git a également des références pour les branches distantes. Les références de branche distantes vivent dans le répertoire./.git/refs/remotes/
., L’extrait de code suivant montre les branches que vous pourriez voir après avoir récupéré un dépôt distant commodément nommé remote-repo:
git branch -r
# origin/master
# origin/feature1
# origin/debug2
# remote-repo/master
# remote-repo/other-feature
Cette sortie affiche les branches locales que nous avions précédemment examinées mais les affiche maintenant préfixées parorigin/
. De plus, nous voyons maintenant les branches distantes préfixées avec remote-repo
. Vous pouvez extraire une branche distante comme une branche locale, mais cela vous place dans un État HEAD
détaché (tout comme vérifier un ancien commit). Vous pouvez les considérer comme des branches en lecture seule., Pour afficher vos branches distantes, passez simplement l’indicateur-r
à la commandegit branch
.
Vous pouvez inspecter les branches distantes avec l’habituelle git checkout
et git log
commandes. Si vous approuvez les modifications qu’une branche distante contient, vous pouvez la fusionner dans une branche locale avec un git merge
normal. Ainsi, contrairement à SVN, la synchronisation de votre référentiel local avec un référentiel distant est en fait un processus en deux étapes: récupérer, puis fusionner. La commandegit pull
est un raccourci pratique pour ce processus.,
Git fetch commandes et options
git fetch <remote>
récupération de toutes les branches du référentiel. Cela télécharge également tous les commits et fichiers requis à partir de l’autre référentiel.
git fetch <remote> <branch>
de Même que la commande ci-dessus, mais uniquement récupérer la branche.
git fetch --all
Un transfert de puissance qui récupère tous les inscrits de télécommandes et de leurs branches:
git fetch --dry-run
Le --dry-run
option effectuer une démonstration exécution de la commande., Il affichera des exemples d’actions qu’il effectuera pendant la récupération mais ne les appliquera pas.
git fetch a remote branch
L’exemple suivant montre comment récupérer une branche distante et mettre à jour votre état de travail local vers le contenu distant. Dans cet exemple, supposons qu’il existe une origine de dépôt central à partir de laquelle le dépôt local a été cloné à partir de la commande git clone
. Supposons également un dépôt distant supplémentaire nommé coworkers_repo qui contient un feature_branch que nous allons configurer et récupérer., Avec ces hypothèses établies, continuons l’exemple.
Tout d’abord, nous devrons configurer le dépôt distant en utilisant la commandegit remote
.
git remote add coworkers_repo [email protected]:coworker/coworkers_repo.git
ici, nous avons créé une référence au repo du collègue en utilisant l’URL du repo. Nous allons maintenant passer ce nom distant à git fetch
pour télécharger le contenu.
git fetch coworkers_repo coworkers/feature_branch
fetching coworkers/feature_branch
Nous avons maintenant localement le contenu de vos collègues/feature_branch nous aurons besoin de l’intégrer dans notre copie de travail locale., Nous commençons ce processus en utilisant la commandegit checkout
pour extraire la branche distante nouvellement téléchargée.
git checkout coworkers/feature_branch
Note: checking out coworkers/feature_branch'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:
git checkout -b <new-branch-name>
Le résultat de cette opération de vérification indique que nous sommes dans une maison individuelle HEAD
état. Ceci est attendu et signifie que notre HEAD
ref pointe vers une ref qui n’est pas en séquence avec notre histoire locale. Étant donné que HEAD
est pointé vers la ref coworkers/feature_branch, nous pouvons créer une nouvelle branche locale à partir de cette ref., Le » détaché HEAD
‘ sortie nous montre comment faire cela à l’aide de la balise git checkout
commande:
git checkout -b local_feature_branch
Ici, nous avons créé une nouvelle branche locale nommée local_feature_branch. Cela met à jour HEAD
pour pointer vers le dernier contenu distant et nous pouvons continuer le développement à partir de ce point.
synchroniser origin avec git fetch
L’exemple suivant décrit le workflow typique de synchronisation de votre dépôt local avec la branche principale du dépôt central.,
git fetch origin
cela affichera les branches qui ont été téléchargées:
les commits de ces nouvelles branches distantes sont affichés sous forme de carrés au lieu de cercles dans le diagramme ci-dessous. Comme vous pouvez le voir, git fetch
vous donne accès à toute la structure de branche d’un autre référentiel.,
Pour voir ce qui commet ont été ajoutés à l’amont, maître, vous pouvez exécuter une git log
à l’aide de origin/master comme un filtre:
git log --oneline master..origin/master
Pour valider les modifications et de les fusionner dans votre branche master, utilisez les commandes suivantes:
git checkout master
git log origin/master
Ensuite, nous pouvons utiliser git merge origin/master
:
git merge origin/master
L’origine/master et master branches pointent désormais à la même livraison, et vous sont synchronisés avec l’amont que de l’évolution de la situation.,
Git fetch résumé
En examen, git fetch
est une commande principale utilisée pour télécharger du contenu à partir d’un dépôt distant. git fetch
est utilisé en conjonction avec des git remote
, git branch
, git checkout
et git reset
pour mettre à jour un dépôt local pour l’etat d’une télécommande. La commandegit fetch
est un élément essentiel des flux de travail collaboratifs git., git fetch
has similar behavior to git pull
, however, git fetch
can be considered a safer, nondestructive version.