Exécuter git log --follow -- Fichier
Dans cette étape, nous allons explorer comment suivre l'historique d'un fichier spécifique, même s'il a été renommé. C'est là que la commande git log --follow
s'avère utile.
Tout d'abord, assurons-nous que nous sommes dans le répertoire de notre projet.
cd ~/project/my-time-machine
Maintenant, créons un nouveau fichier et ajoutons-y du contenu.
echo "This is the original content." > original_file.txt
Ajoutons et validons (commit) ce fichier.
git add original_file.txt
git commit -m "Add original file"
Vous devriez voir une sortie similaire à celle-ci :
[master 1a2b3c4] Add original file
1 file changed, 1 insertion(+)
create mode 100644 original_file.txt
Maintenant, renommons le fichier.
git mv original_file.txt renamed_file.txt
Vérifions l'état pour voir le changement.
git status
Vous devriez voir quelque chose comme ceci :
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
renamed: original_file.txt -> renamed_file.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
message.txt
Validons le renommage.
git commit -m "Rename original file"
Vous devriez voir une sortie similaire à celle-ci :
[master 5d6e7f8] Rename original file
1 file changed, 0 insertions(+), 0 deletions(-)
rename original_file.txt -> renamed_file.txt (100%)
Maintenant, utilisons git log
pour voir l'historique du fichier renommé.
git log renamed_file.txt
Cela n'affichera que le commit où le fichier a été renommé. Pour voir l'historique avant le renommage, nous devons utiliser l'option --follow
.
git log --follow renamed_file.txt
Cette commande vous montrera l'historique du fichier, en suivant ses changements de nom. Vous devriez voir à la fois le commit "Rename original file" et le commit "Add original file".
La commande git log --follow
est essentielle lorsque vous avez besoin de comprendre l'historique complet d'un fichier qui a été déplacé ou renommé dans votre dépôt (repository). Elle vous aide à retracer l'évolution du fichier à travers différents commits, indépendamment de son nom actuel.