656 votes

Différence entre arbre mental / travail / Index dans Git

Quelqu'un peut me dire la différence entre le Cap / arbre de travail / Index dans Git ?

Ce que je comprends, ils sont tous les noms des différentes branches. Mon hypothèse est correcte ?

EDIT : J’ai trouvé cette « un dépôt git unique permet de suivre un nombre arbitraire de branches, mais votre arbre de travail est associé à un seul d'entre eux (« current » ou « extrait » branche) et tête pointe vers cette branche. » Cela signifie que la tête et l’arbre de travail sont toujours les mêmes ?

759voto

VonC Points 414372

Quelques autres bonnes références sur ces sujets:

alt text

J'utilise l'index comme un point de contrôle.
Quand je suis sur le point de faire un changement qui pourrait aller de travers quand je veux explorer quelques sens que je ne suis pas sûr si je peux suivre à travers sur, ou même si c'est une bonne idée, comme un conceptuellement exigeants refactoring ou la modification d'un type de représentation - je point de contrôle de mon travail dans l'index.
Si c'est le premier changement que j'ai fait depuis mon dernier commit, alors je peux utiliser le référentiel local comme un point de contrôle, mais souvent j'ai un changement conceptuel que je suis en œuvre comme une série de petites étapes.
Je veux de point de contrôle après chaque étape, mais de sauver la livraison jusqu'à ce que j'ai obtenu de retour au travail, de code à tester.

alt text

Ils sont essentiellement nommé références pour Git s'engage. Il existe deux principaux types de références: les tags et les chefs.

  • Les balises sont fixés des références qui marque un point spécifique dans l'histoire, par exemple v2.6.29.
  • Au contraire, les chefs sont toujours déplacés à refléter la position actuelle de développement du projet.

alt text

Maintenant, nous savons ce qui se passe dans le projet.
Mais pour savoir ce qui se passe ici, maintenant il y a une référence spécifique appelé à la TÊTE. Il sert deux objectifs principaux:

  • il indique à Git qui s'engagent à prendre des fichiers à partir de quand vous commandez, et
  • il indique à Git où mettre les nouveaux commits lorsque vous validez.

Lorsque vous exécutez git checkout ref il points de HEAD pour les ref que vous avez désigné et extraits de fichiers de. Lorsque vous exécutez git commit il crée une nouvelle révision de l'objet, qui devient un enfant de courant HEAD. Normalement, HEAD points à l'une des têtes, donc tout fonctionne très bien.

alt text

173voto

Jakub Narębski Points 87537

La différence entre la TÊTE (branche actuelle ou la dernière commis de l'état actuel de la branche), index (aka. zone de transit) et de l' arbre de travail (l'état des fichiers dans la caisse) est décrit dans les "Trois États" de la section "3.1 Git Bases" chapitre de Pro Git livre de Scott Chacon (sous licence Creative Commons).

Voici l'image qui l'illustre à partir de ce chapitre:

Local Operations - working directory vs. staging area (index) vs git repository (HEAD)

Dans l'image ci-dessus "répertoire de travail" est le même que "l'arbre de travail", la "zone de transit" est un autre nom pour git "index", et le CHEF des points d'extrait de branche, qui pointe des points pour le dernier commit dans le "répertoire git (référentiel)"

Notez que git commit -a seraient des changements de phase et de s'engager dans une étape.

87voto

Brian Campbell Points 101107

Votre arbre de travail est ce qui est réellement dans les fichiers que vous êtes en train de travailler. HEAD est un pointeur vers la branche ou de s'engager à ce que vous avez vérifié, et qui va être le parent d'un nouveau commit, si vous le faites. Par exemple, si vous êtes sur l' master de la branche, alors HEAD aura point de master, et lorsque vous vous engagez, que le nouveau commit sera un descendant de la révision master a souligné, et master sera mis à jour pour pointer vers le nouveau commit.

L'indice est une zone de transit où le nouveau commit est préparé. En substance, le contenu de l'index sont ce qui va aller dans le nouveau commit (bien que si vous n' git commit -a, cela ajoutera automatiquement toutes les modifications apportées aux fichiers qui Git sait à propos de l'index avant de s'engager, donc il va s'engager avec le contenu actuel de votre arbre de travail). git add permettra d'ajouter ou de mettre à jour des fichiers à partir de l'arbre de travail dans votre index.

1voto

Mark Points 898

Bonne intro à git concepts dans ce long mais la vidéo d' Introduction à Git avec Scott Chacon de GitHubde mouvement rapide.

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