Cas d'utilisation pratiques avec .gitignore
L'un des cas d'utilisation les plus courants de git rm --cached est lorsque vous souhaitez arrêter de suivre des fichiers qui devraient être ignorés. Explorons cela avec un exemple pratique.
Création et validation de fichiers
Tout d'abord, créons une situation où nous avons accidentellement validé des fichiers que nous aurions dû ignorer :
- Assurez-vous d'être toujours dans le répertoire
git-index-demo :
cd ~/project/git-index-demo
- Ajoutons nos fichiers existants à l'index :
git add hello.txt another.txt
- Maintenant, validons ces fichiers :
git commit -m "Initial commit"
Vous devriez voir une sortie confirmant la validation :
[master (root-commit) xxxxxxx] Initial commit
2 files changed, 2 insertions(+)
create mode 100644 another.txt
create mode 100644 hello.txt
- Créez un fichier journal qui simule un fichier généré que nous ne voulons pas suivre :
echo "Some log data" > application.log
- Ajoutons et validons accidentellement ce fichier journal :
git add application.log
git commit -m "Add log file by mistake"
Vous devriez voir une sortie confirmant la validation :
[master xxxxxxx] Add log file by mistake
1 file changed, 1 insertion(+)
create mode 100644 application.log
Utilisation de .gitignore et git rm --cached
Maintenant, corrigeons notre erreur en créant un fichier .gitignore et en utilisant git rm --cached :
- Créez un fichier
.gitignore pour spécifier que nous voulons ignorer tous les fichiers .log :
echo "*.log" > .gitignore
- Vérifiez l'état :
git status
Vous devriez voir :
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
.gitignore
nothing added to commit but untracked files present (use "git add" to track)
Remarquez que même si nous avons le fichier .gitignore avec le motif *.log, le fichier application.log n'est pas répertorié comme étant modifié. En effet, .gitignore empêche uniquement l'ajout à l'index des fichiers non suivis. Les fichiers qui sont déjà suivis continueront à l'être.
- Ajoutons et validons le fichier
.gitignore :
git add .gitignore
git commit -m "Add .gitignore file"
- Maintenant, supprimons le fichier journal de l'index Git tout en le conservant dans notre système de fichiers :
git rm --cached application.log
Vous devriez voir :
rm 'application.log'
- Vérifiez l'état :
git status
Vous devriez voir :
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
deleted: application.log
Cela indique que la suppression du fichier du système de suivi de Git sera incluse dans la prochaine validation.
- Validons ce changement :
git commit -m "Stop tracking application.log"
- Vérifiez l'état une fois de plus :
git status
Vous devriez voir :
On branch master
nothing to commit, working tree clean
- Vérifions maintenant que le fichier existe toujours dans notre système de fichiers :
ls -l
Vous devriez voir que application.log existe toujours, ainsi que nos autres fichiers :
total 16
-rw-r--r-- 1 labex labex 13 [date] another.txt
-rw-r--r-- 1 labex labex 13 [date] application.log
-rw-r--r-- 1 labex labex 6 [date] .gitignore
-rw-r--r-- 1 labex labex 11 [date] hello.txt
- Essayons de modifier le fichier journal pour voir si Git suit les modifications :
echo "More log data" >> application.log
git status
Vous devriez voir :
On branch master
nothing to commit, working tree clean
Même si nous avons modifié le fichier journal, Git ne détecte aucun changement car le fichier est maintenant ignoré en raison du motif .gitignore.
C'est un flux de travail très courant lorsque vous validez accidentellement des fichiers qui devraient être ignorés, tels que :
- Les artefacts de construction
- Les fichiers journaux
- Les fichiers de configuration contenant des informations sensibles
- Les répertoires de dépendances (comme
node_modules dans les projets JavaScript)
En utilisant git rm --cached avec .gitignore, vous pouvez :
- Arrêter de suivre les fichiers qui devraient être ignorés
- Conserver les fichiers dans votre système de fichiers local
- Les empêcher d'être ajoutés au dépôt à l'avenir