Maison  >  Article  >  outils de développement  >  Les principes d’implémentation de git et svn sont-ils les mêmes ?

Les principes d’implémentation de git et svn sont-ils les mêmes ?

WBOY
WBOYoriginal
2022-01-07 11:04:022864parcourir

Les principes d'implémentation de git et svn sont différents ; git est un système de contrôle de version distribué, svn ne l'est pas. C'est la différence fondamentale entre les systèmes de contrôle de version non distribués git et svn, et git stocke le contenu sous forme de métadonnées. svn est stocké en mode fichier.

Les principes d’implémentation de git et svn sont-ils les mêmes ?

L'environnement d'exploitation de cet article : système Windows 10, Git version 2.30.0, ordinateur Dell G3.

Les principes d'implémentation de git et svn sont-ils les mêmes ?

Git est un système de contrôle de version distribué open source utilisé pour gérer n'importe quel petit ou grand projet de manière agile et efficace.

Git est un logiciel de contrôle de version open source développé par Linus Torvalds pour aider à gérer le développement du noyau Linux.

Git est différent des outils de contrôle de version couramment utilisés tels que CVS, Subversion, etc. Il adopte une bibliothèque de versions distribuées et ne nécessite pas de support logiciel côté serveur.

1. La différence entre Git et SVN

GIT n'est pas seulement un système de contrôle de version, c'est aussi un système de gestion de contenu (CMS), un système de gestion de travail, etc.

Si vous êtes une personne ayant une expérience dans l'utilisation de SVN, vous devez apporter certains changements idéologiques pour vous adapter à certains concepts et fonctionnalités fournis par GIT.

Les différences entre Git et SVN :

  • 1 GIT est distribué, SVN ne l'est pas : c'est la différence fondamentale entre GIT et d'autres systèmes de contrôle de version non distribués, tels que SVN, CVS, etc.

  • 2. GIT stocke le contenu sous forme de métadonnées, tandis que SVN stocke le contenu sous forme de fichiers : tous les systèmes de contrôle des ressources masquent les métainformations des fichiers dans un dossier comme .svn, .cvs, etc.

  • 3. Les branches GIT sont différentes des branches SVN : les branches ne sont pas du tout spéciales dans SVN, elles sont juste un autre répertoire dans le référentiel.

  • 4. GIT n'a pas de numéro de version global, mais SVN en a : jusqu'à présent, c'est la plus grande fonctionnalité qui manque à GIT par rapport à SVN.

  • 5. L'intégrité du contenu de GIT est meilleure que celle de SVN : le stockage de contenu de GIT utilise l'algorithme de hachage SHA-1. Cela garantit l'intégrité du contenu du code et réduit les perturbations du référentiel en cas de panne de disque et de problèmes de réseau.

2. Principes Git : espace de travail Git, zone de préparation et référentiel

Concepts de base

Comprenons d'abord les concepts d'espace de travail, de zone de préparation et de référentiel Git

Espace de travail : c'est vous Répertoire visible sur le ordinateur.

Zone de stockage temporaire : appelée stage, ou index en anglais. Il est généralement stocké dans le fichier d'index (.git/index) sous le "répertoire .git", c'est pourquoi on appelle parfois la zone de stockage temporaire l'index (index).

Dépôt : Il y a un répertoire caché .git dans l'espace de travail. Ce n'est pas l'espace de travail, mais le référentiel Git.

La figure suivante montre la relation entre l'espace de travail, la zone de transit dans le référentiel et le référentiel :

Les principes d’implémentation de git et svn sont-ils les mêmes ?

Le côté gauche de la figure est l'espace de travail et le côté droit est le référentiel. La zone marquée « index » dans le référentiel est la zone de transfert (stage, index), et la zone marquée « master » est l'arborescence de répertoires représentée par la branche master.

Sur l'image, on peut voir que "HEAD" est en fait un "curseur" pointant vers la branche master. Par conséquent, là où HEAD apparaît dans la commande illustrée sur la figure, il peut être remplacé par master.

La zone identifiée par les objets dans l'image est la bibliothèque d'objets de Git, qui se trouve en fait dans le répertoire ".git/objects", qui contient divers objets et contenus créés.

Lorsque la commande "git add" est exécutée sur un fichier modifié (ou ajouté) dans l'espace de travail, l'arborescence des répertoires dans la zone de stockage temporaire est mise à jour, et par la même occasion le contenu du fichier modifié (ou ajouté) dans l'espace de travail est écrit dans la bibliothèque d'objets dans un nouvel objet et l'ID de l'objet est enregistré dans l'index de fichier de la zone de stockage temporaire.

Lors de l'exécution d'une opération de validation (git commit), l'arborescence des répertoires dans la zone de stockage temporaire est écrite dans la bibliothèque de versions (bibliothèque d'objets) et la branche principale sera mise à jour en conséquence. Autrement dit, l'arborescence de répertoires pointée par master est l'arborescence de répertoires de la zone de stockage temporaire au moment de la soumission.

Lorsque la commande "git reset HEAD" est exécutée, l'arborescence des répertoires dans la zone de préparation sera réécrite et remplacée par l'arborescence des répertoires pointée par la branche master, mais l'espace de travail ne sera pas affecté.

Lorsque la commande "git rm --cached " est exécutée, le fichier sera supprimé directement de la zone de préparation et l'espace de travail ne sera pas modifié.

Lorsque la commande "git checkout." ou "git checkout -- " est exécutée, les fichiers de l'espace de travail seront remplacés par tous les fichiers spécifiés dans la zone de préparation. Cette opération est dangereuse et effacera les modifications apportées à l'espace de travail qui n'ont pas été ajoutées à la zone de préparation.

Lorsque la commande "git checkout HEAD." ou "git checkout HEAD " est exécutée, tout ou partie des fichiers de la branche master pointée par HEAD seront utilisés pour remplacer les fichiers dans la zone de transit et l'espace de travail. Cette commande est également extrêmement dangereuse, car elle effacera non seulement les modifications non validées dans l'espace de travail, mais également les modifications non validées dans la zone de préparation.

Apprentissage recommandé : "Tutoriel Git"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn