Comment forcer git pull à écraser les fichiers locaux ?

Comment forcer git pull à écraser les fichiers locaux ?

Lorsque tu travailles avec Git, il arrive parfois que tes fichiers locaux divergent du dépôt distant.
Tu veux alors remettre ton répertoire exactement comme sur le dépôt distant, en écrasant toutes tes modifications locales.
Un simple git pull ne suffit pas, car Git protège tes changements.
👉 Cet article t’explique comment forcer git pull à écraser les fichiers locaux sans détruire le dépôt.


⚠️ Avertissement important

Avant toute chose : ces commandes vont écraser tes modifications locales.
Si tu veux les conserver, fais une sauvegarde ou crée une branche temporaire avant de continuer :

git checkout -b sauvegarde-locale

1. Le problème : conflit entre le local et le distant

Lorsque tu exécutes :

git pull

Git tente de fusionner les changements du dépôt distant avec ton travail local. Mais si tu as modifié les mêmes fichiers, Git affiche un message du genre :

error: Your local changes to the following files would be overwritten by merge:

C’est là qu’il faut agir prudemment.


2. La solution simple : réinitialiser ton dépôt local

Si tu veux tout écraser et repartir proprement, la méthode la plus fiable est d’utiliser :

git fetch --all
git reset --hard origin/<nom_de_branche>

Exemple :

Si tu es sur la branche main :

git fetch --all
git reset --hard origin/main

🧠 Explication :


3. Alternative : forcer un git pull avec --rebase et --autostash

Si tu veux essayer d’intégrer tes modifications tout en tirant la dernière version du dépôt distant, tu peux utiliser :

git pull --rebase --autostash

Ce que ça fait :

👉 Cela ne force pas vraiment un écrasement, mais c’est utile quand tu veux éviter les conflits sans tout perdre.


4. Le vrai “force pull” : fusion écrasante

Si tu veux imiter un git pull qui écrase tout, tu peux combiner les commandes suivantes :

git fetch origin
git reset --hard origin/$(git rev-parse --abbrev-ref HEAD)
git clean -fd

Détails :

🎯 Résultat : ton dossier local correspond exactement à la version distante.


5. Cas particulier : réinitialiser un seul fichier

Si tu veux seulement écraser un fichier spécifique, pas tout le projet :

git checkout origin/main -- chemin/vers/fichier

Cela récupère le fichier depuis le dépôt distant et remplace ta version locale.


6. Astuce bonus : script rapide “reset total”

Si tu fais souvent ce genre d’opération (par exemple sur un environnement de test ou de déploiement), crée un alias dans ton .gitconfig :

[alias]
    hardpull = !git fetch --all && git reset --hard origin/$(git rev-parse --abbrev-ref HEAD) && git clean -fd

Ensuite, exécute simplement :

git hardpull

💡 Cet alias te fait gagner du temps et garantit que ton dépôt local reste propre et à jour.


🧩 En résumé

Situation Commande recommandée Effet
Écraser tout le dépôt local git fetch --all && git reset --hard origin/main Supprime toutes les modifications locales
Écraser un seul fichier git checkout origin/main -- chemin/fichier Restaure le fichier depuis le dépôt distant
Conserver les changements locaux si possible git pull --rebase --autostash Garde et rejoue les commits locaux
Nettoyer fichiers/dossiers non suivis git clean -fd Supprime les fichiers inutiles

✅ Conclusion

Il n’existe pas de commande directe git pull --force, car Git protège volontairement ton travail local. Mais en combinant fetch, reset --hard et clean, tu obtiens un effet équivalent — un dépôt parfaitement synchronisé avec le distant.

🧠 Conseil : réserve ces commandes à des environnements où aucune donnée locale importante ne risque d’être perdue.