La commande Git Push ajoute les contenus d’un dépôt local vers un dépôt central. Par défaut, Git n’autorise que les push qui n’écrasent aucun commit dans le dépôt cible. Si vous con­tour­nez cette pro­tec­tion avec l’option « --force », vous risquez de perdre les mo­di­fi­ca­tions d’autres personnes.

IONOS GPT
Votre assistant IA souverain pour booster votre pro­duc­ti­vité

Demandez, créez et re­cher­chez en toute sécurité et sans limite de dis­cus­sion avec IONOS GPT : l'al­ter­na­tive sou­ve­raine et abordable à ChatGPT et autres as­sis­tants con­ver­sa­tion­nels.

Git Push, c’est quoi ?

Le logiciel Git permet de tra­vail­ler à plusieurs sur des projets de dé­ve­lop­pe­ment, tran­quil­le­ment et sans risque pour chacun des membres de l’équipe de codage. Ceci est rendu possible grâce à l’uti­li­sa­tion de dépôts in­di­vi­duels locaux. Une fois terminées, les mo­di­fi­ca­tions peuvent être intégrées à l’ensemble du projet avec la commande Git Push. Celle-ci permet d’ajouter les contenus de votre dépôt local dans un dépôt distant, auquel les autres dé­ve­lop­peurs ont eux aussi accès. Git Push est donc une commande très im­por­tante dans le dé­rou­le­ment du projet.

La commande fonc­tionne comme le pendant des commandes Git Fetch ou Git Pull. Alors que ces dernières font glisser des contenus d’un dépôt distant vers votre dépôt local, Git Push va dans l’autre sens. Ces commandes au­to­ma­ti­sent de nom­breuses étapes de travail en simultané (c’est notamment l’une des dif­fé­rences entre Git et SVN). Une fois les mo­di­fi­ca­tions apportées, il suffit de les ajouter au dépôt distant. Attention : notez bien que Git Push peut écraser d’autres mo­di­fi­ca­tions lorsqu’il est utilisé avec l’option « --force », la commande doit donc être utilisée avec pré­cau­tion.

Syntaxe et fonc­tion­ne­ment de Git Push

La syntaxe de Git Push est simple : tout d’abord, vous écrivez la commande elle-même, puis vous indiquez le dépôt distant et enfin la branche locale que vous souhaitez envoyer. Voici à quoi cela ressemble :

git push <depot-distant> <branche-locale>
bash

Git crée ou met à jour la branche cor­res­pon­dante dans le dépôt-cible et y ajoute tous les contenus, les commits et les objets internes. Le logiciel de contrôle de versions inclut toutefois une fonction de pro­tec­tion qui bloque le Git Push si jamais le char­ge­ment ne pouvait pas se faire en fast-forward merge (fusion rapide). Cette fonc­tion­na­lité évite que la commande n’efface par mégarde les commits.

Exemple de Git Push

L’exemple suivant montre à quoi ressemble un Git Push dans la pratique. Pour cela, supposons que vous avez apporté des mo­di­fi­ca­tions dans votre dépôt local, que vous les avez in­té­gra­le­ment testées et que celles-ci sont ap­prou­vées. L’étape suivante consiste à préparer ces mo­di­fi­ca­tions pour le dépôt distant afin que les autres membres de l’équipe puissent eux aussi y accéder. Pour cela, on utilise dif­fé­rentes commandes qui restent toujours à portée de main grâce à la très pratique Git Cheat Sheet avec PDF à té­lé­char­ger.

git checkout main
git fetch origin main
git rebase -i origin/main
# Squash commits, fix up commit messages etc.
git push origin main
bash

La commande Git Checkout permet de basculer sur la branche prin­ci­pale. Git Fetch s’assure que l’état du dépôt local cor­res­pond à celui du dépôt central. La commande Git Rebase fusionne l’état du dépôt central avec celui du dépôt local. Il est ainsi possible d’effectuer ensuite une fast-forward merge puisque les bases des dépôts central et local sont iden­tiques. Enfin, il suffit d’exécuter Git Push qui transmet l’état actuel, avec toutes ses mo­di­fi­ca­tions, au dépôt central.

Autres options de la commande

En plus de la commande standard dont la syntaxe est détaillée ci-dessus, Git Push peut se cons­truire avec dif­fé­rents arguments.

Ajouter toutes les branches

git push <depot-distant> --all
bash

Cette commande rappelle la syntaxe standard, sim­ple­ment au lieu d’ajouter une branche sé­lec­tion­née elle ajoute di­rec­te­ment toutes les branches locales au dépôt central. Ainsi, pas besoin de répéter la procédure pour chacune des branches.

Ajouter des éti­quettes

git push <depot-distant> --tags
bash

Cette option permet d’envoyer toutes les éti­quettes locales vers le dépôt distant. Un Git Push ordinaire ne prend pas en compte les éti­quettes (ou tags).

Forcer le Git Push

git push <depot-distant> --force
bash

Cette commande ressemble aussi à la syntaxe standard, mais elle permet de forcer le Git Push même lorsque la fast-forward merge n’est pas possible. Comme cela augmente le risque d’écraser certaines mo­di­fi­ca­tions et d’engendrer des erreurs, mieux vaut éviter de l’utiliser.

Git Push vers un dépôt bare

Pour s’assurer que les projets im­por­tants restent intacts suite à un Git Push, il est re­com­mandé de ne faire la commande que dans des dépôts bare. Vous les créez avec git init --bare ou git clone --bare. Un dépôt bare ne possède pas de ré­per­toire de travail dans lequel quelqu’un travaille di­rec­te­ment : un push ne risque donc pas d’y altérer des fichiers extraits. C’est pourquoi, par défaut, Git refuse un push vers la branche extraite d’un dépôt qui possède un ré­per­toire de travail.

Supprimer des branches avec Git Push

Git Push peut aussi être utilisé pour supprimer une branche en local et à distance. La commande ressemble alors à ceci :

git branch -d ancienne-branche
git push origin :ancienne-branche
bash

Cette commande efface la branche « ancienne-branche » du dépôt distant.

Conseil

Mettez en ligne vos sites Web et ap­pli­ca­tions en trois étapes seulement ! Avec Deploy Now de IONOS, profitez d’une ins­tal­la­tion rapide avec un système évolutif. Testez Deploy Now pendant un mois, c’est gratuit !

Aller au menu principal