Aller au contenu

git push

Définition

La commande git push envoie le contenu du dépôt local vers le dépôt distant. Pousser est l’inverse de récupérer. Si git fetch importe le contenu vers les branches locales, git push l’exporte vers les branches distantes.

Utilisation de git push

La commande git push est couramment utilisée pour publier les modifications locales vers le dépôt central. Une fois les modifications apportées dans le dépôt local, vous pouvez utiliser git push pour partager les changements avec les autres membres de l’équipe. La commande git push fait partie des commandes impliquées dans le processus de « synchronisation ». Ces commandes fonctionnent sur les branches distantes configurées avec la commande git remote. Les commits sont envoyés avec git push et récupérés avec git fetch et git pull. Après avoir effectué des modifications dans les deux cas, git merge est utilisé pour intégrer les changements.

Les diagrammes suivants montrent la progression du master local au-delà du master du dépôt central et la publication des changements en invoquant git push origin master.

git push

Options courantes

git push <remote> <branch>Envoie la branche spécifiée vers <remote> avec les commits nécessaires, en créant une branche distante dans le dépôt de destination.
git push <remote> --forceForce l’envoi même s’il en résulte une mise à jour non fast-forward. Assurez-vous que personne n’a récupéré les commits avant d’utiliser l’option --force.
git push <remote> --allEnvoie toutes les branches locales vers le dépôt distant.
git push <remote> --tagsEnvoie les tags des branches locales vers le dépôt distant. L’option --all n’enverra pas les tags.

Comment pousser vers des dépôts nus

Il est très sûr de pousser vers des dépôts créés avec l’indicateur --bare, car cela n’autorise ni la modification de fichiers ni l’enregistrement de changements dans ce dépôt. Il est recommandé de créer les dépôts centraux comme des dépôts nus ; sinon, pousser vers un dépôt non nu peut écraser des changements.

Envoi forcé

Git peut refuser votre demande d’envoi si l’historique du dépôt central ne correspond pas à celui du dépôt local. Dans ces cas, vous devez récupérer la branche distante et la fusionner dans le dépôt local, puis renvoyer les changements. L’indicateur --force écrase la branche distante avec la branche locale, en abandonnant tous les changements en amont qui n’ont pas été récupérés. Utilisez l’envoi forcé lorsque des commits partagés sont incorrects et sont corrigés avec git commit --amend ou un rebase interactif. Avant d’utiliser l’option --force, assurez-vous que personne n’a récupéré les commits. Le rebase interactif est aussi un bon moyen de nettoyer les commits avant de les partager. La commande git commit --amend met à jour le commit précédent. Lorsqu’un commit est amendé, git push échouera, car Git considérera le commit amendé et le commit distant comme des contenus divergents. Ici, --force doit être utilisé pour envoyer le commit amendé.

git push --force

bash
# make changes to a repo and git add
git commit --amend
# update the existing commit message
git push --force origin master

Comment supprimer une branche distante

Voici un exemple de suppression de la branche distante. Le branch_name précédé d’un deux-points dans git push supprimera la branche distante :

delete remote branch, git push

bash
git branch -D branch_name
git push origin :branch_name

La commande git push origin :branch_name supprime la branche spécifiée (branch_name) du dépôt distant (origin) en lui envoyant une référence vide.

Voici comment cela fonctionne :

  1. git push : envoie les changements de votre dépôt Git local vers un dépôt distant
  2. origin : le nom du dépôt distant
  3. :branch_name : un refspec qui représente une référence vide, supprimant effectivement la branche spécifiée du dépôt distant

Ainsi, lorsque vous exécutez git push origin :branch_name, Git supprimera la branche branch_name du dépôt distant origin.

Notez que cette commande peut être dangereuse si elle est utilisée incorrectement, car elle supprimera la branche sans aucune confirmation ni possibilité de récupération. Assurez-vous de revérifier le nom de la branche et de vraiment vouloir la supprimer avant d’exécuter la commande.

Utiliser l’indicateur -u pour le premier envoi d’une branche

Lorsque vous avez une branche locale et que vous souhaitez la pousser vers le dépôt distant pour la première fois, vous devez préciser de quelle branche du dépôt distant il s’agit. Dans Git, l’indicateur -u est utilisé avec la commande git push pour définir la branche amont de la branche courante. Lorsque vous utilisez l’indicateur -u, Git crée un lien entre votre branche locale et la branche distante. Ce lien est utile pour simplifier les commandes git pull et git push à l’avenir, car il permet à Git de mémoriser quelle branche distante correspond à votre branche locale.

L’indicateur -u est l’abréviation de --set-upstream. Lorsque vous utilisez cet indicateur, vous le verrez généralement utilisé comme ceci :

Utiliser l’indicateur -u pour le premier envoi d’une branche

bash
git push -u origin your-branch-name

Exemples de quelques indicateurs les plus couramment utilisés :

Voici quelques exemples d’utilisation des indicateurs git push :

Indicateur -f :


bash
git push -f origin master

Cela forcera l’envoi de la branche locale master vers le dépôt distant origin, en écrasant tous les changements qui auraient pu être apportés à la branche master dans le dépôt distant. Utilisez cet indicateur avec prudence, car il peut causer des problèmes si plusieurs personnes travaillent sur la même branche.

Indicateur --tags :


bash
git push --tags origin

Cela enverra tous les tags vers le dépôt distant origin. Les tags sont utilisés pour étiqueter des points importants de l’historique de votre projet, comme des versions ou des jalons.

Indicateur --all :


bash
git push --all origin

Cela enverra toutes les branches locales vers le dépôt distant origin.

Indicateur --dry-run :


bash
git push --dry-run origin master

Cela simulera un envoi vers la branche master du dépôt distant origin, sans rien envoyer réellement. Cela peut être utile pour tester et vérifier quels changements seront envoyés avant de les envoyer réellement.

Indicateur --force-with-lease :


bash
git push --force-with-lease origin master

Cela forcera l’envoi de la branche locale master vers le dépôt distant origin, tout en garantissant que vous n’écrasez pas les changements qui auraient pu être apportés à la branche master dans le dépôt distant depuis votre dernière récupération. C’est une alternative plus sûre à l’utilisation de l’indicateur -f.

Practice

Which statements are true regarding the 'git push' command?

Trouvez-vous cela utile?

Aperçu dual-run — comparez avec les routes Symfony en production.