Évolution du code source : index

Les commits d'un projet ajoutent, modifient voir suppriment des fichiers à un projet. Ils montrent l'évolution temporelle du projet et son liées à l'état précédent du projet, appelé état parent, qu'ils modifient.

Définition

Un commit d'un projet est constitué :

  • d'une sauvegarde du répertoire de travail (un snapshot du working directory)
  • de QUI a effectué cette sauvegarde
  • de QUAND a été effectué cette sauvegarde
  • du (ou des) commits PARENT(S)
  • d'un descriptif des modifications effectuées (QUOI)

commits

Lors d'un commit on a pas forcément envie de :

Enfin, il peut être difficile de comparer ce qui est sauvé de ce qui est nouveau.

Principe

Pour cela on ajoute un tampon entre la structure de sauvegarde et le répertoire courant appelé l'index.

index

Pour un projet github l'index correspond aux fichiers présent sur la page du projet

Après un commit, l'index contient l'ensemble des fichiers sauvé dans le commit. Si ces fichiers sont également dans le répertoire de travail, ils seront tous les 3 identiques :

index post commit

Lorsque l'on ajoute un fichier au projet, l'index et le dossier de travail divergent (l'utilisateur vient de créer fichier2.txt) :

index travail commit

Pour préparer le nouveau commit, l'utilisateur place dans l'index les fichiers modifiés qu'il veut sauvegarder (les autres sont déjà dans l'index), ici il ajoute fichier2.txt :

index pré commit

Remarquez qu'un fichier du dossier n'est toujours pas suivi.

On peut maintenant faire le commit, l'intégralité de l'index est commit (on a un commit de plus dans la chaîne) :

index commit

Et on se retrouve à nouveau dans la situation post-commit :

index commit

Diff

L'index présente ce que vous allez sauver dans votre sauvegarde. À tout moment, il vous indique donc :

Définition

On appelle diff les différences entre deux commits, entre le répertoire de travail et l'index ou encore entre deux fichiers.

A savoir :

  • les fichiers présent dans un commit et pas dans un autre
  • les lignes différentes dans un fichier présent dans les deux commits

Attention cependant, ces diff ne sont que des constructions, ils ne sont pas stocké dans le système.

Fichiers ignorés

Certains fichiers ne doivent pas être suivis. Par exemple :

Mais aussi vos propres fichiers qui risquent d'entrer en collision avec ceux des autres utilisateurs comme

Et surtout les fichiers confidentiels que vous ne voulez surtout pas voir apparaître sur github :

Ces fichiers doivent être ajoutés à une liste de fichier à ignorer, sans ça vous devrez toujours faire attention lorsque vous regarderez les différences entre l'index et le répertoire de travail.

Par exemple, si le fichier3.txt n'est jamais à sauver, une fois ajoutée à la liste des fichiers à ignorer il n'apparaîtra pas comme une différence (mais on pourra toujours à tout moment l'ajouter) :

ignore list

À retenir

La liste des fichier à ignorer est très pratique en code pour ignorer les environnements virtuels, les fichiers de configurations de l'IDE, les fichiers compilés, les bibliothèques partagées. Bref tout ce qui n'est pas stricto sensu utile au code du projet.