129 votes

Que signifient réellement les vérifications de git ?

Quels sont checkout dans git ?

Je sais qu'une fois que tu l'auras fait checkout à une branche particulière, le HEAD pointe vers cette branche. Mais qu'est-ce que cela signifie vraiment ? Cela signifie-t-il que je peux travailler sur cette branche ? Si oui, alors, sans vérifier une branche, je ne suis pas en mesure d'y travailler ?

De même, que fait remote checkout signifie ? Quelle est son utilité ?

86voto

David Culp Points 1655

Comme vous l'avez noté, HEAD est une étiquette qui indique où vous vous trouvez dans l'arbre de livraison. Elle se déplace avec vous lorsque vous passez d'un commit à un autre. git checkout <commit> est le mécanisme de base pour se déplacer dans l'arbre de commit, déplacer votre focus ( HEAD ) au commit spécifié.

Le commit peut être spécifié de plusieurs façons : hash de commit, nom de branche, nom de tag, syntaxe relative ( HEAD^ , HEAD~1 etc.) et ainsi de suite. Il est souvent utile de considérer un checkout comme un changement de branche, et il y a quelques options qui fonctionnent de ce point de vue, mais elles font toutes référence aux commits.

Vérifier un commit a des effets secondaires autres que le déplacement. HEAD autour.

  • Le répertoire de travail est mis à jour à l'état de la livraison extraite.
  • si le nom d'une branche est spécifié, le checkout rend cette branche active. La branche active se déplacera avec tous les nouveaux commits qui sont ajoutés.
    • avec le -b une nouvelle branche sera créée sur la base du commit actuel et ensuite rendue active.
    • avec le --track la branche extraite peut être mise au courant de l'existence d'une branche distante.
    • avec le --orphan une nouvelle branche est créée (comme avec -b ) mais ne sera pas basé sur un commit existant.

Il existe quelques autres options, que vous pouvez consulter dans la rubrique git checkout man-page qui tournent tous autour du passage d'un commit à un autre - en variant simplement l'effet de ce passage en plus du déplacement HEAD .

37voto

owaishanif786 Points 2031

Permettez-moi d'expliquer quelques cas d'utilisation du checkout avec des fichiers, des dossiers et des branches afin de faciliter la compréhension.

Disons que nous avons un dossier nommé dev y index.html également Tout est suivi et le répertoire de travail est propre.

Si je change accidentellement le nom du fichier index.html et je veux annuler cela, je vais simplement utiliser git checkout index.html il récupérera l'état de ce fichier à partir de la branche de dépôt actuellement sélectionnée.

Maintenant, si j'ai fait quelques changements dans dev et je veux le récupérer. Je peux utiliser git checkout dev mais que faire s'il existe déjà une branche nommée dev au lieu de vérifier ce dossier, il va extraire cette branche. Pour éviter cela, je préfère faire git checkout -- dev .

Maintenant, ici le double tiret nu représente la branche courante et demande à git le dossier dev de la branche actuellement sélectionnée.

De même, si je fais git checkout alpha dev il va tirer le dossier dev de la branche alpha.

Cette réponse est pour votre première question 'git checkout really mean'.

33voto

Michael Wild Points 6612

"Extraire" signifie que vous prenez un commit donné du référentiel et recréez l'état de l'arborescence des fichiers et des répertoires associés dans le répertoire de travail.

Quand vous vérifiez un commit qui est no une tête de branche (par exemple git checkout HEAD~2 ), vous êtes sur ce que l'on appelle détaché tête. Vous pouvez créer des commits ici, mais une fois que vous passez à une autre branche, ces commits ne seront pas récupérables par un nom de branche et pourraient même être supprimés par le ramasseur d'ordures après un certain temps.

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