Je trouve git difficile à comprendre car je ne pouvais pas trouver le sens des mots utilisés pour les actions. J'ai vérifié dans le dictionnaire la signification de «stage» et aucune des significations n'était liée aux concepts de contrôle de source.
Que signifie "stage" dans le contexte de git?
git add file.ext
un fichier spécifique ougit add .
à affecter tous les fichiers modifiés et non suivis. Les fichiers ajoutés de cette manière sont dits "mis en scène" et seront inclus dans le prochain "commit". Le commit est un instantané de votre travail créé avec par exemplegit commit -m "I wrote something"
.Réponses:
Pour mettre en scène un fichier est tout simplement de préparer finement pour une livraison . Git, avec son index, ne vous permet de valider que certaines parties des modifications que vous avez effectuées depuis le dernier commit. Supposons que vous travaillez sur deux fonctionnalités: l’une est terminée et l’autre a encore besoin de travail. Vous souhaitez vous engager et rentrer chez vous (à 5 heures, enfin!), Mais ne souhaitez pas engager les parties du deuxième long métrage, ce qui n'est pas encore terminé. Vous mettez en scène les parties que vous savez appartenir à la première fonctionnalité et vous validez. Maintenant, votre commit est votre projet avec la première fonctionnalité effectuée, tandis que la seconde est toujours en cours de développement dans votre répertoire de travail.
la source
Puisque tout le monde a jusqu'ici répondu de manière "formelle", permettez-moi de le faire avec des alternatives pour améliorer l'apprentissage avec le pouvoir des métaphores.
Donc, la zone de transit est comme:
C'est magique !
la source
La mise en scène est une étape avant le processus de validation dans git. Autrement dit, une validation dans git est effectuée en deux étapes: mise en attente et validation réelle.
Tant qu’un ensemble de modifications figure dans la zone de stockage intermédiaire, git vous permet de le modifier à votre guise (remplacez les fichiers intermédiaires par d'autres versions, supprimez les modifications, etc.).
Temps de métaphore brisé:
Prenons un scénario dans lequel vous appelez les déménageurs pour que vos affaires soient acheminées de votre ancien appartement à votre nouvel appartement. Avant de faire cela, vous allez parcourir vos affaires, décider ce que vous emportez avec vous et ce que vous jetez, le ranger dans des sacs et le laisser dans le couloir principal. Les déménageurs viennent simplement chercher les sacs (déjà emballés) dans le couloir et les transporter. Dans cet exemple, tout est mis en scène jusqu'à ce que les déménageurs récupèrent vos affaires: vous décidez où aller, comment les emballer, etc. (par exemple, vous pouvez décider que la moitié de vos affaires seront jetées avant même que les déménageurs y arrivent - c de la mise en scène).
D'un point de vue technique, la mise en scène prend également en charge les validations transactionnelles, en scindant toutes les opérations en ce qui peut échouer (staging) et ce qui ne peut pas échouer (commit):
Le commit in git est implémenté de manière transactionnelle, une fois la mise en scène réussie. Plusieurs étapes de la mise en place peuvent échouer (par exemple, vous devez valider, mais votre disque dur est plein à 99,9999% et git ne dispose d'aucun espace pour effectuer une validation). Cela échouera lors de la staging (votre référentiel ne sera pas corrompu par une validation partielle) et le processus de staging n'affectera pas votre historique de validation (il ne corrompra pas votre référentiel en cas d'erreur).
la source
Préparer un fichier, c'est le préparer pour un commit. Parce que git expose cette action au contrôle des utilisateurs, il vous permet de créer des validations partielles, ou de modifier un fichier, de le modifier, de le modifier à nouveau et de ne valider ou de revenir qu'à la modification initiale.
La mise en scène vous permet de contrôler plus précisément comment vous souhaitez aborder le contrôle de version.
la source
Pour ajouter aux autres excellentes réponses, voici d'où vient le nom de "stage":
En anglais, "mettre en scène" peut signifier
(extrait de http://oxforddictionaries.com/definition/stage )
Le nom "staging" pour la fonctionnalité git dérive de cette signification: Lors de la staging, vous préparez et organisez un commit. Bien sûr , un commit est pas tout à fait identique à une performance, mais il est un événement important dans un VCS :-).
la source
Avec la plupart des autres systèmes de contrôle de version, il existe 2 emplacements pour stocker des données: votre copie de travail (les dossiers / fichiers que vous utilisez actuellement) et le magasin de données (où le contrôle de version décide comment empaqueter et stocker vos modifications). Dans Git, il existe une troisième option: la zone de transfert (ou index). Il s’agit essentiellement d’un quai de chargement où vous déterminez les modifications qui seront expédiées.
source: http://gitready.com/beginner/2009/01/18/the-staging-area.html
la source
La "phase" est une étape intermédiaire techniquement nécessaire dans le processus de vérification d'un fichier, à savoir la collecte des modifications à ajouter au référentiel. Les auteurs de Git ont choisi de rendre cette étape visible et persistante là où d'autres VCS en font une partie transitoire du processus de validation. Donc c’est juste une option que git vous donne parce qu’elle peut le faire, alors pourquoi pas?
La façon dont je le vois, le principal avantage de la "phase" de git est que vous ne pouvez pas l’utiliser avec d’autres VCS, c’est que vous pouvez l’utiliser pour contrôler un fichier. En réalité, il s’agit d’un commit local non nommé et non commenté qui vous donne une étape intermédiaire entre effectuer tout votre travail et le valider définitivement dans le référentiel et ne rien enregistrer dans votre référentiel local.
Par exemple, supposons qu'une fonctionnalité soit partiellement finie. Il est dans un état stable, passe tous les tests et pourrait entrer en production, mais vous avez encore du travail à faire. Vous pouvez mettre en scène toutes vos modifications, puis continuer à travailler sur la fonctionnalité.
Plus tard, vous aurez l’option de valider ce que vous avez mis en scène (et de le transmettre au référentiel distant) ou d’ajouter vos nouvelles modifications à votre zone de mise en attente, puis de les commettre tous en même temps, ou d’annuler uniquement vos nouvelles modifications et modifications. ramenez votre répertoire de travail à l'état dans lequel il se trouvait lorsque vous avez mis en place vos modifications.
Il est tout à fait possible de pratiquement ignorer la zone intermédiaire et d'utiliser l'
-a
optiongit commit
si vous ne trouvez pas que la zone intermédiaire est un concept utile. Beaucoup de gens ignorent la mise en scène et les outils graphiques le permettent généralement.la source
D'après ce que je comprends, supposons que je développe une fonction de connexion et que 5 étapes consécutives soient nécessaires. Donc, ici, la mise en scène vous aidera à travailler sur des étapes comme celle
de l'étape 1.
fait avec l'étape 2, maintenant les étapes 1 et 2 sont toutes les deux correctes.
gâcher avec l'étape 3 la dernière étape échelonnée, sans étape sur la caisse, qui est l'étape 2 de la
même manière une fois que vous avez terminé avec les 5 étapes, ce qui signifie que la fonctionnalité est complète, puis effectuez la validation.
la source