Git – le b.a.-ba – lister les fichiers modifiés avec leur date
Dans la série des trucs et astuces sur Git, nous allons voir comment lister les fichiers modifiés avec leur date de modification.
Lister les modifications dans l’espace de travail
La commande pour lister les modifications courantes est l’une des toutes premières commandes git
que l’on apprend. Et je crois que c’est l’une des commandes que j’utilise le plus. Cela se fait via git status
:
git status
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
(use "git push" to publish your local commits)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: .gitignore
modified: README.md
Lister les fichiers modifiés avec la date de modification
Cependant, de temps en temps, j’ai besoin de savoir quels jours ont été modifié quels fichiers. J’avoue. Souvent, c’est parce ce que j’ai oublié de réaliser un commit intermédiaire ou n’ai pas tiré de branche pour tester quelque chose qui n’a rien à voir avec les modifications en cours. J’ai alors besoin de trier les fichiers modifiés par ordre chronologique pour les séparer dans des commits différents.
Pour cela, j’utilise cette commande :
git status -s | while read mode file; do echo "${mode}" $(stat -c %y "${file}") "${file}"; done|sort -k1,4
M 2021-06-24 22:17:42.000000000 +0200 .gitignore
M 2021-06-23 22:02:14.000000000 +0200 README.md
Je serais curieux de savoir si je suis le seul à avoir besoin de lister les fichiers modifiés dans git avec leur date.
https://blog.lecacheur.com/2021/06/25/git-le-b-a-ba-lister-les-fichiers-modifies-avec-leur-date/https://blog.lecacheur.com/wp-content/uploads/2014/10/git_logo.pnghttps://blog.lecacheur.com/wp-content/uploads/2014/10/git_logo-150x150.pngDéveloppementgitDans la série des trucs et astuces sur Git, nous allons voir comment lister les fichiers modifiés avec leur date de modification. Lister les modifications dans l'espace de travail La commande pour lister les modifications courantes est l'une des toutes premières commandes git que l'on apprend. Et je crois que c'est...SeBSébastien LECACHEUR23r0@laposte.netAdministratorLe weblogue de SeB
Il faudrait ajouter des doubles cotes sur l’usage des variables, sinon il y a des bugs. Pour les fichiers nouvellement créés par exemple, où la valeur de `mode` est donc « ?? », les points d’interrogation remontés par l’expression `$mode` vont être interprétés par le shell comme des wildcards. Si le répertoire courant contient un fichier ou répertoire dont le nom est sur deux caractères, alors ce nom va matcher le wildcard et être utilisé comme valeur de l’expression `$mode`. À l’inverse, si aucun nom de fichier ne match l’expression ‘??’, alors les points d’interrogation seront écrits tel quels (sauf si on a fait un `shopt -s nullglob` avant), raison pour laquelle tu n’as sans doute pas remarqué le problème. De la même façon, des noms de fichier particuliers peuvent aussi produire des choses bizarres avec l’usage de l’expression `$file` sans cotes.
D’une façon générale, en Bash, dès que des variables sont utilisée sans doubles cotes, le jeu, c’est de chercher à quel moment ça va déraper…
Bien vu et merci pour les détails sur les conséquences. J’ai corrigé la commande.
Quand j’écris des scripts, j’ai Shellcheck qui me reprend sur ce type d’erreur. J’ai pris l’habitude d’encadrer les variables avec des doubles quotes et des accolades. Mais là, je suis allé un peu vite dans le terminal. Encore merci pour ta remarque !