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 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.
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 :
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
Lorsque la commande "git checkout." ou "git checkout --
Lorsque la commande "git checkout HEAD." ou "git checkout HEAD
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!