Git – utilisation simple et avancée

Git est un système de contrôle de version distribué utilisé pour gérer les projets de développement de logiciels. Il permet aux développeurs de travailler ensemble sur un projet en toute sécurité, en gardant une trace des modifications apportées au code source. Cet article vous présentera les principales fonctionnalités de git, ainsi que les cas d’utilisation les plus courants.

Installation

Vous pouvez utiliser chocolatey :

choco install git

Cela aura pour effet d’installer git-bash. Mais vous pouvez installer une console bien pratique :

choco install conemu

Espaces de travail

Il existe 3 espaces de travail sous Git :

  • Dépôt local
    • Base de données ou arbre git (objets, branches, tags, logs) : stocke les données et les métadonnées du projet
  • Zone de cache
    • Appelée aussi index : stocke un snapshot des changements
    • Un moyen de construire progressivement le contenu du futur commit en indexant les modifications qui vont y être associées
    • On y ajoute les modifications via « git add »
  • Répertoire de travail : la zone de travail locale, là où se trouve votre espace de travail avec tous les fichiers de votre projet

Les objets Git

Le répertoire .git est le dépôt local qui contient toute l’arborescence du projet.

Propriétés communes

  • Référencés par une somme de contrôle
  • Immuable : écrit une fois et non modifiable par la suite
  • Pas de suppression d’objets (tout se conserve)

3 types d’objets

Blob

  • Stocke le contenu d’un fichier
  • Soit nouveau fichier soit une modification de fichier
    • A chaque fois l’intégralité du contenu est enregistré 
    • Blob initial pour un nouveau fichier 
    • Nouveau blob pour une modification du fichier
  • Identifié via une somme de contrôle (SHA1)

Tree

  • Va décrire l’arborescence du projet ~= répertoire 
  • Une liste de pointeur vers les blobs 
  • Si modification de fichier –> nouveau blob mais aussi nouveau tree ! 
  • Structure arborescente faite de pointeurs

Commit

  • Objet avec le message de commit
  • Metadata référençant le tree et le parent (celui qui précède) avec l’auteur et le comitteur 
  • Le commit est un pointeur sur un tree
  • Photographie du projet

Exemple simple d’utilisation :

On configure les informations globales pour git : le nom de l’auteur et son adresse email.
On crée un repository git intitulé « formation ».
On crée un nouveau fichier « README ».
On l’ajoute au cache via git add et on sauvegarde via git commit.
A chaque modification du fichier README, il faudra refaire un git add puis un commit !


git config --global user.name "Pascal MIETLICKI"
git config --global user.email "[email protected]"
git init formation 

cd formation 

touch README 

git add README 
git commit -m "Ajout du fichier README" 

Les commandes de base

Initialiser un dépôt git

Pour utiliser git sur un projet, vous devez d’abord initialiser un dépôt git. Vous pouvez le faire en utilisant la commande suivante :

git init

Cette commande va créer un nouveau répertoire caché appelé « .git », qui contiendra toutes les informations relatives au dépôt git.

Ajouter des fichiers au dépôt

Une fois que vous avez initialisé un dépôt git, vous pouvez commencer à ajouter des fichiers à celui-ci. Pour ajouter un fichier à un dépôt git, vous utiliserez la commande suivante :

git add nom_du_fichier

Cette commande prend en argument le nom du fichier que vous souhaitez ajouter.

Valider des modifications

Lorsque vous avez fini de modifier vos fichiers, vous devez les valider en utilisant la commande suivante:

git commit -m "message de validation"

Cette commande permet de créer un point de référence dans l’historique du dépôt git, qui va permettre de retrouver les modifications apportées à un fichier à un moment donné.

Les fonctionnalités avancées

Gérer les branches

Les branches vous permettent de travailler sur différentes versions d’un projet en même temps. Vous pouvez créer une nouvelle branche à l’aide de la commande suivante :

git branch nom_de_la_branche

puis basculer d’une branche à l’autre à l’aide de la commande suivante :

git checkout nom_de_la_branche

Fusionner des branches

Une fois que vous avez terminé de travailler sur une branche, vous pouvez fusionner vos modifications avec la branche principale (ou « master ») en utilisant la commande suivante:

git merge nom_de_la_branche

Cette commande va fusionner les modifications apportées à la branche courante avec la branche spécifiée en argument.

Gérer les conflits

Pour éviter les conflits : pensez à faire des merges régulièrement !

Lorsque vous fusionnez des branches, il est possible que des conflits surviennent. Les conflits se produisent lorsque deux branches ont modifié le même fichier de manière incompatible. Pour résoudre les conflits, vous devrez ouvrir les fichiers en conflit et les modifier manuellement pour les résoudre. Une fois que vous avez résolu les conflits, vous pouvez valider les modifications en utilisant la commande de validation de git :

git commit -m "message de validation des modifications résolues"

Travailler avec des dépôts distants

Git permet également de travailler avec des dépôts distants, tels que GitHub ou GitLab. Pour ajouter un dépôt distant à votre projet, vous pouvez utiliser la commande suivante :

git remote add nom_du_dépôt_distant url

Ensuite, vous pouvez synchroniser votre dépôt local avec le dépôt distant en utilisant les commandes « git push » et « git pull ».

Pour obtenir de l’aide sur une commande : git help -w <commande>

git help -w init
git help -w cat-file

Pour voir le contenu d’un fichier : git cat-file

git cat-file <SHA1>
git cat-file -p <SHA1>

Conclusion

Git est un outil puissant pour la gestion de projets de développement de logiciels. Les commandes de base et les fonctionnalités avancées décrites dans cet article vous permettront de gérer efficacement vos projets en utilisant git. N’hésitez pas à consulter la documentation de git pour en savoir plus sur les commandes et les fonctionnalités disponibles.

Pour un résumé des commandes : voir le git cheat sheet