Pourquoi les géants de l'Internet utilisent-ils Git au lieu de SVN? (Contient un résumé des principales commandes et principes de Git)

Ecrire devant

Récemment, j'ai constaté que de nombreux amis ne sont pas très familiers avec l'utilisation de certains outils de base au travail, tels que: Git, un entrepôt de gestion de code distribué, beaucoup d'entre eux ne sont pas très familiers ou pas très familiers. Même certains amis n'ont jamais entendu parler de Git, alors ils utilisent juste SVN. Comme tout le monde le sait, les grands géants de l'Internet d'aujourd'hui et les entreprises émergentes du cheval noir de l'Internet utilisent essentiellement Git et ont fondamentalement abandonné l'utilisation de SVN. Pourquoi? Regardons ensemble.

La différence entre Git et SVN

Différentes méthodes de stockage

Git stocke le contenu dans un format de métadonnées similaire à une base de données k / v, tandis que SVN est basé sur des fichiers (la nouvelle version de SVN a été remplacée par le stockage des métadonnées)

Ici, nous donnons un exemple d'utilisation de Git simple.

cd .git/objects/df/
git cat-file -p df70460b4b4aece5915caf5c68d12f560a9de56e
echo 'version1' > text.txt
git hash-object -w text.txt

Différents modes d'utilisation

Pour pousser des fichiers localement vers des services distants, SVN n'a besoin que de commint et Git a besoin de trois étapes: ajouter, commint et pousser.

Par exemple, nous utilisons la figure suivante pour simuler l'utilisation de SVN.

Insérez la description de l'image ici

Nous pouvons utiliser la figure suivante pour simuler l'utilisation de Git.

Insérez la description de l'image ici

Le mode de gestion des versions est différent

Git est un système de gestion de version distribué, tandis que SVN est un système de gestion centralisé à distance.

Par exemple, nous pouvons utiliser la figure suivante pour représenter la gestion centralisée de SVN.
Insérez la description de l'image ici

Nous pouvons utiliser la figure suivante pour représenter la gestion distribuée de Git.

Insérez la description de l'image ici

Résumé des commandes principales de Git

Installation du client Git

Téléchargement officiel du client: https://git-scm.com/downloads

Téléchargez d'autres clients: https://tortoisegit.org/download/

Utilisation des commandes Git

(1) Cloner en local basé sur un entrepôt distant

git clone <remote_url>

(2) Le répertoire courant est initialisé en tant qu'entrepôt local git

git init  <directory>

(3) Créer un projet basé sur un modèle mvn

mvn archetype:generate

Ajouter localement

(1) Ajouter le fichier spécifié à la zone de stockage temporaire

git add <fileName>

(2) Ajouter le répertoire spécifié à la zone de stockage temporaire

git add <directory>

(3) Tout ajouter

git add -A

(4) Supprimez le répertoire et les sous-répertoires spécifiés de la zone de stockage temporaire

git rm --cached target -r

(5) Ajoutez le fichier de configuration .gitignore

Soumettre localement

(1) Soumettre à l'entrepôt local

git commit file -m '提交的注释信息'

(2) Soumettre rapidement à l'entrepôt local

git commit -am '快捷添加与提交'

Gestion de succursale

(1) Afficher la branche actuelle

git branch [-avv]

(2) Créer une nouvelle branche basée sur la branche actuelle

git branch <branch name>

(3) Créer une nouvelle branche basée sur la soumission

git branch <branch name> <commit id>
$ git branch -d {
    
    dev}

(4) Changer de branche

git checkout <branch name>

(5) Fusion de succursales

git merge <merge target>

(6) Résoudre les conflits

Si la fusion automatique échoue en raison de conflits, le statut fusionne actuellement. Besoin de modifier manuellement et de resoumettre (validation)

Gestion d'entrepôt à distance

(1) Afficher la configuration à distance

git remote [-v]

(2) Ajouter une adresse distante

git remote add origin http:xxx.xxx

(3) Supprimer l'adresse distante

git remote remove origin 

(4) Téléchargez la nouvelle branche sur la télécommande

git push --set-upstream origin master 

(5) Associez la succursale locale à la télécommande

git branch --track --set-upstream-to=origin/test test

Gestion des balises

(1) Voir le courant

git tag

(2) Créer une succursale

git tag <tag name> <branch name>

(3) Supprimer la succursale

git tag -d <tag name>

Gestion des journaux

(1) Afficher tous les journaux de validation sous la branche actuelle

git log

(2) Afficher tous les journaux de validation sous la branche actuelle

git log {
    
    branch}

(3) Journal d'affichage sur une seule ligne

git log --oneline

(4) Comparez la différence entre les deux versions

git log master..experiment

(5) Afficher le réseau fusionné soumis dans un graphique

git log --pretty=format:'%h %s' --graph

Principes sous-jacents de Git

Objet de stockage GIT (hashMap)

Git est un système de fichiers adressable par le contenu. Sa partie principale est un simple magasin de données clé-valeur. Vous pouvez insérer n'importe quel contenu dans la base de données et il renverra une clé de hachage pour récupérer la valeur. .

(1) Insérer des données dans la bibliothèque de valeurs-clés Git

echo 'binghe' | git hash-object -w --stdin 79362d07cf264f8078b489a47132afbc73f87b9a

(2) Obtenez le contenu spécifié en fonction de la clé

git cat-file -p 79362d07cf264f8078b489a47132afbc73f87b9a

Sur la base de cette fonction, Git enregistre le contenu de chaque version de fichier dans la base de données, et lorsque la version doit être restaurée, l'une des clés est utilisée pour récupérer et remplacer la période.

Processus d'écriture et de restauration de la version Git

(1) Trouver tous les objets git

 find .git/objects/ -type f

(2) Ecrire la version 1

echo 'version1' > README.MF; git hash-object -w README.MF;

(3) Ecrire la version 2

echo 'version2' > README.MF; git hash-object -w README.MF;

(4) Ecrire la version 3

echo 'version3' > README.MF; git hash-object -w README.MF;

(5) Annuler la version spécifiée

git cat-file -p c11e96db44f7f3bc4c608aa7d7cd9ba4ab25066e > README.MF

Donc, notre git add habituel consiste en fait à insérer le contenu modifié dans la bibliothèque clé-valeur. Lorsque nous exécutons git add README.MF, cela équivaut à exécuter git hash-object -w README.MF pour écrire le fichier dans la base de données.

Nous avons résolu le problème de stockage, mais il ne peut stocker que du contenu et ne stocke pas le nom du fichier. Si vous souhaitez revenir en arrière, comment savoir quel contenu correspond à quel fichier? Ensuite, nous examinerons l'objet tree, qui résout le problème du stockage des noms de fichiers.

Objet d'arborescence Git

L'objet d'arborescence résout le problème de nom de fichier. Son objectif est d'organiser plusieurs noms de fichier ensemble, qui contiennent plusieurs noms de fichiers et leurs clés correspondantes et des références à d'autres objets de l'arborescence, qui peuvent être considérés comme des fichiers dans le système d'exploitation. Dossier, un dossier contient plusieurs fichiers et plusieurs autres dossiers.

Chaque branche est associée à un objet d'arborescence, qui stocke tous les noms de fichiers et les clés correspondantes sous la branche courante. Vous pouvez l'afficher avec la commande suivante

 git cat-file -p master^{
    
    tree} 

Objet commit Git

Une soumission est un instantané de la version actuelle. L'instantané est enregistré en soumettant l'objet. Le contenu stocké est: un objet d'arborescence de niveau supérieur, l'objet qui a été soumis la dernière fois, le nom d'utilisateur et l'adresse e-mail de l'expéditeur, ainsi que l'horodatage de la soumission. soumettre des commentaires.

$ git cat-file -p b2395925b5f1c12bf8cb9602f05fc8d580311836 
tree 002adb8152f7cd49f400a0480ef2d4c09b060c07 
parent 8be903f5e1046b851117a21cdc3c80bdcaf97570 
author binghe <[email protected]> 1532959457 +0800 
committer binghe <[email protected]> 1532959457 +0800 

En résumé, nous pouvons en déduire qu'un total de trois objets sont générés du processus de modification d'un fichier à sa soumission:

  • Un objet de contenu: le contenu du fichier est stocké
  • Un objet arbre: la clé du nom de fichier et de l'objet contenu est stockée
  • Un objet de soumission: stocke la clé de l'objet de l'arborescence et soumet des commentaires.

Références Git

Lorsque nous exécutons git branch {branchName}, une branche est créée. L'essence est de créer un fichier de référence basé sur le commit spécifié dans git et de le sauvegarder sous .git \ refs \ heads \.

(1) Créer une branche

 git branch dev 
 cat.git\refs\heads\dev

Il existe trois types de références dans Git:

  • Référence de branche
  • Référence de branche distante
  • Référence d'étiquette

(2) Interroger et comparer deux versions

 git log master..experiment

(3) Réseau d'historique de soumission de version

git log --pretty=format:'%h %s' --graph

(4) Voir l'arborescence des branches

git cat-file -p master^{
    
    tree}

Eh bien, parlons-en aujourd'hui! N'oubliez pas de l'aimer, donnez-le à quelqu'un qui le regarde et transmettez-le, afin que plus de gens puissent voir, apprendre ensemble et progresser ensemble! !

Je suppose que tu aimes

Origine blog.csdn.net/l1028386804/article/details/108569833
conseillé
Classement