Menu
Coddy logo textTech

Git Force Push

Dernière mise à jour

Un git push normal est rejeté lorsque votre branche locale a divergé de la branche distante - Git n'écrase pas des commits que vous n'avez peut-être pas vus. Le force push contourne cette vérification et fait correspondre la branche distante à votre branche locale. Vous en avez besoin après avoir réécrit l'historique (un rebase ou un amend), mais cela peut effacer les commits d'autres personnes, alors privilégiez le plus sûr --force-with-lease.

Essayez-les dans le terminal playground - un vrai shell dans votre navigateur, rien à installer.

Un force push aligne la branche distante sur votre historique local réécrit - le commit divergent du dépôt distant est jeté.

Syntaxe

CommandWhat it does
git push --forceÉcrase la branche distante, sans vérification de sécurité
git push -fForme abrégée de --force
git push --force-with-leaseForce uniquement si personne d'autre n'a poussé entre-temps
git push --force-with-lease origin featureForce push plus sûr vers une branche nommée

--force vs --force-with-lease

Behavior--force--force-with-lease
Écrase la branche distanteToujoursUniquement si inchangée depuis votre dernier fetch
Peut effacer les commits des autresOuiRefuse, sauf si un fetch a rafraîchi le lease
Recommandé pour les équipesNonOui

FAQ git force push

Quand ai-je besoin de forcer le push ?
Lorsque vous avez réécrit un historique déjà présent sur le dépôt distant - après un git rebase, un git commit --amend ou un rebase interactif qui a fusionné des commits. Votre branche locale ne correspond plus à l'historique distant, donc un push normal est rejeté et seul un force push peut le mettre à jour.
Quelle est la différence entre --force et --force-with-lease ?
--force écrase la branche distante sans condition, ce qui peut supprimer en silence des commits qu'un collègue a poussés après votre dernier fetch. --force-with-lease n'écrase que si le dépôt distant est encore sur le commit que vous avez vu en dernier - si quelqu'un d'autre a poussé entre-temps, il refuse et protège son travail. Un bémol : n'importe quel fetch (y compris l'auto-fetch en arrière-plan d'un IDE) rafraîchit le lease, alors poussez juste après avoir vérifié le dépôt distant. Privilégiez malgré tout --force-with-lease sur toute branche partagée.
Le force push est-il dangereux ?
Il peut l'être. Sur une branche partagée, un simple --force peut écraser des commits que d'autres ont poussés, supprimant de fait leur travail du dépôt distant. Il est sûr sur une branche que vous seul utilisez. En cas de doute, utilisez --force-with-lease, qui échoue en toute sécurité au lieu d'écraser des changements que vous n'avez pas vus.
Comment annuler un force push ?
Si vous avez encore les anciens commits localement ou dans git reflog, vous pouvez réinitialiser votre branche vers eux et forcer le push à nouveau pour restaurer l'état précédent. C'est une raison de plus d'utiliser --force-with-lease - il rend les écrasements accidentels bien moins probables dès le départ.
Puis-je m'entraîner en ligne ?
Oui. Ouvrez le terminal playground pour exécuter des commandes git push dans un vrai shell dans votre navigateur - rien à installer. Le cours Git interactif et gratuit de Coddy couvre aussi le travail avec les dépôts distants étape par étape.
Coddy programming languages illustration

Apprenez Git avec Coddy

COMMENCER