Ajouter ou modifier des fichiers dans un projet et actualiser notre dépôt Git
A ce niveau, nous avons donc d’un côté notre projet contenant un ensemble de fichiers et de ressources sur lesquelles on travaille ainsi qu’un dépôt Git qui sert à gérer les différentes versions de notre projet.
En continuant à travailler sur notre projet, nous allons être amenés à ajouter, modifier, voire supprimer des fichiers. On va indiquer tous ces changements à Git pour qu’il conserve un historique des versions auquel on pourra ensuite accéder pour revenir à un état précédent du projet (dans le cas où une modification entraine un bogue par exemple ou n’amène pas le résultat souhaité).
A chaque fois qu’on souhaite enregistrer une modification de fichier ou un ajout de fichier dans le dépôt Git, on va devoir utiliser les commandes git add
et git commit
comme on a pu le faire dans la leçon précédente.
J’attire ici votre attention sur un point important : le commit (la validation / l’enregistrement en base de données) d’un fichier se basera sur l’état de ce fichier au moment du git add
.
Cela signifie que si vous effectuer une commande git add
sur un fichier puis modifiez à nouveau le fichier puis effectuez un git commit
, c’est le fichier dans son état au moment du dernier git add
qui sera validé et les dernières modifications ne seront donc pas enregistrées dans le dépôt Git.
Si vous souhaitez enregistrer toujours la dernière version d’un fichier, pensez donc bien toujours à effectuer un git add
juste avant un git commit
. Pour mettre en un coup les fichiers modifiés et déjà sous suivi dans la zone d’index puis pour les valider, vous pouvez également utiliser git commit
avec une option -a
comme ceci : git commit -a
. Cela vous dispense d’avoir à taper git add
.
Supprimer un fichier d’un projet et / ou l’exclure du suivi de version Git
Concernant la suppression de fichiers, il existe plusieurs situations possibles en fonction de ce que vous souhaitez réellement faire : voulez vous simplement exclure un fichier du suivi de version mais le conserver dans votre projet ou également le supprimer du projet ?
Avant tout, notez que simplement supprimer un fichier de votre dossier avec une commande Bash rm
par exemple ne suffira pas pour que Git oublie ce fichier : il apparaitra dans chaque git status
dans une section “changes not stages for commit” (modifications qui ne seront pas validées).
On peut s’en assurer en faisant le test. Pour cela, commençons par ajouter un nouveau fichier dans notre répertoire “projet-git”. On peut faire cela avec une commande Bash touch
.
Comme le fichier vient tout juste d’être ajouté, on va devoir l’indexer pour qu’il soit sous suivi Git puis le valider.
Ici, j’utilise la commande git commit
avec une option -m
qui me permet de renseigner directement le message lié à mon commit plutôt que de devoir le faire dans VIM.
Le fichier est désormais sous suivi et la dernière version est enregistrée en base. Essayons maintenant de l’effacer avec une commande rm
par exemple et tapons un nouveau git status
:
Comme vous pouvez le voir, Git continue de suivre le fichier et la suppression simple du fichier ne sera pas validée comme changement par Git.
Pour supprimer un fichier et l’exclure du suivi de version, nous allons utiliser la commande git rm
(et non pas simplement une commande Bash rm
).
Pour simplement exclure un fichier du suivi Git mais le conserver dans le projet, on va utiliser la même commande git rm
mais avec cette fois-ci une option --cached
.
Ici, le fichier a bien été exclu du suivi Git mais existe toujours dans notre projet. On va ensuite pouvoir modifier ce fichier (lui ajouter du texte par exemple) comme n’importe quel fichier et Git ne se préoccupera pas des modifications.
Retirer un fichier de la zone d’index de Git
Le contenu de la zone d’index est ce qui sera proposé lors du prochain commit. Imaginons qu’on ait ajouté un fichier à la zone d’index par erreur. Pour retirer un fichier de l’index, on peut utiliser git reset HEAD nom-du-fichier
.
A la différence de git rm
, le fichier continuera d’être suivi par Git. Seulement, le fichier dans sa version actuelle va être retiré de l’index et ne fera donc pas partie du prochain commit.
Regardez plutôt l’exemple ci-dessous :
Ici, on ajoute à nouveau le fichier fichier2.txt à l’index et on le passe donc sous suivi de version. On valide cela avec git commit
puis on modifie le contenu de notre fichier et on ajoute la dernière version de notre fichier à la zone d’index pour qu’il fasse partie du prochain commit. Finalement, on change d’idée et on veut retirer cette version de la zone d’index. On fait cela avec git reset HEAD fichier2.txt
.
Empêcher l’indexation de certains fichiers dans Git
Lorsqu’on dispose d’un projet et qu’on souhaite utiliser Git pour effectuer un suivi de version, il est courant qu’on souhaite exclure certains fichiers du suivi de version comme certains fichiers générés automatiquement, des fichiers de configuration, des fichiers sensibles, etc.
On peut informer Git des fichiers qu’on ne souhaite pas indexer en créant un fichier .gitignore
et en ajoutant les différents fichiers qu’on souhaite ignorer. Notez qu’on peut également mentionner des schémas de noms pour exclure tous les fichiers correspondant à ce schéma et qu’on peut même exclure le contenu entier d’un répertoire en écrivant le chemin du répertoire suivi d’un slash.
Renommer un fichier dans Git
On peut également renommer un fichier de notre projet depuis Git en utilisant cette fois-ci une commande git mv ancien-nom-fichier nouveau-nom-fichier
.
On peut par exemple renommer notre fichier “README.txt” en “LISEZMOI.txt” de la manière suivante :
Le fichier a bien été renommé dans notre répertoire et le changement est prêt à être validé dans le prochain commit.