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.
Syntaxe
| Command | What it does |
|---|---|
git push --force | Écrase la branche distante, sans vérification de sécurité |
git push -f | Forme abrégée de --force |
git push --force-with-lease | Force uniquement si personne d'autre n'a poussé entre-temps |
git push --force-with-lease origin feature | Force push plus sûr vers une branche nommée |
--force vs --force-with-lease
| Behavior | --force | --force-with-lease |
|---|---|---|
| Écrase la branche distante | Toujours | Uniquement si inchangée depuis votre dernier fetch |
| Peut effacer les commits des autres | Oui | Refuse, sauf si un fetch a rafraîchi le lease |
| Recommandé pour les équipes | Non | Oui |
FAQ git force push
Quand ai-je besoin de forcer le push ?
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 ?
--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 ?
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.