git mv

Instantanés de base

Déplacer ou renommer un fichier


La commande 'git mv' renomme ou déplace un fichier suivi et prépare le changement en une étape. C’est la même chose que renommer le fichier vous-même puis lancer git add sur l’ancien et le nouveau nom. Git ne stocke pas les renommages : il les détecte en comparant le contenu, donc git log --follow peut toujours montrer l’historique du fichier à travers le renommage.

Synopsis

git mv [-v] [-f] [-n] [-k] <source> <destination>
[ ] facultatif| ou<arg> valeur à remplacer... répétable--flag option

Exemples

Renommer un fichier

git mv app.js cart.js

Renomme le fichier et prépare le renommage.


Déplacer dans un dossier

git mv cart.js src/cart.js

Déplace le fichier dans un dossier existant.


Historique après un renommage

git log --follow cart.js

Suit l’historique en remontant au-delà du renommage.

Exemples de workflows

1
git mv app.js cart.js

Renommer et préparer

2
git status

Affiche "renamed: app.js -> cart.js"

3
git commit -m "Rename app.js to cart.js"

Commit

Dépannage

fatal: destination exists

Cause : Un fichier portant le nouveau nom existe déjà

Choisissez un autre nom, ou utilisez -f pour l’écraser

fatal: not under version control

Cause : Le fichier source n’est pas suivi

Renommez-le normalement, ou faites d’abord git add

Astuces et pièges

Bonnes pratiques

  • ✓Committez un renommage séparément des grosses modifications, pour que Git le reconnaisse comme un renommage.
  • ✓Utilisez git log --follow <file> pour voir l’historique à travers les renommages.

Erreurs fréquentes

  • ✗Renommer dans l’explorateur de fichiers et ne committer que le nouveau fichier — l’ancien est toujours suivi.
  • ✗Changer seulement la casse sous Windows ou macOS sans git mv, ce que Git peut ne pas remarquer.
  • ✗Renommer et beaucoup modifier un fichier dans le même commit, si bien que Git ne détecte plus le renommage.

FAQ

A:

Pas directement : il compare le contenu entre les commits et détecte le renommage.

A:

Oui : git mv src lib renomme le dossier et tous ses fichiers.