251 votes

Github "Les mises à jour ont été rejetées car la télécommande contient des travaux que vous n'avez pas en local."

J'ai créé un nouveau repo, je l'ai cloné, j'ai ajouté des fichiers dans le répertoire, je les ai ajoutés avec add -A et lorsque j'essaie de pousser en utilisant la fonction git push <repo name> master J'ai compris :

hint : Les mises à jour ont été rejetées parce que le dépôt distant contient des travaux que vous n'avez pas localement. Ceci est généralement causé par un autre dépôt qui pousse sur la même référence. Vous pouvez vouloir d'abord fusionner les changements distants (par ex, hint : 'git pull') avant de pousser à nouveau.

Cela ne semble pas avoir de sens puisqu'il s'agit d'un nouveau dépôt et qu'il ne contient qu'un fichier readme.

3voto

blueblob26 Points 71

J'ai édité manuellement quelques fichiers directement dans le dépôt après avoir poussé le dernier commit et j'ai obtenu la même erreur comme résultat.

Au lieu de git push origin master utiliser git push -f origin master pour forcer une mise à jour.

Je ne recommande de le faire que si vous savez exactement ce qui a été modifié dans le dépôt et que vous êtes sûr à 100% de vouloir que le commit local remplace tout. Le mien était un projet de loisir sur lequel personne d'autre ne travaillait et aucun autre commit n'avait été fait par d'autres appareils à part les changements manuels.

1voto

Darshan Jain Points 41

J'ai suivi ces étapes :

Tirez le maître :

git pull origin master

Cela permettra de synchroniser votre repo local avec le repo Github. Ajoutez votre nouveau fichier et ensuite :

git add .

Valider les changements :

git commit -m "adding new file  Xyz"

Enfin, poussez le master d'origine :

git push origin master

Rafraîchissez votre repo Github, vous verrez les fichiers nouvellement ajoutés.

1voto

andrewdotn Points 9183

Cela peut également se produire si vous avez un clone peu profond. Dans ce cas, il est techniquement toujours vrai que "le dépôt distant contient des travaux que vous n'avez pas localement", parce que vous avez un ensemble limité de commits alors que le dépôt distant a probablement l'historique complet. Si le repo local n'a qu'un seul nouveau commit - ce qui peut arriver sur les systèmes de CI - alors cela pose des problèmes car il n'y a pas de commits en commun et que git sera incapable de pousser.

Une solution peut consister à effectuer un clonage moins profond.

Pour les actions Github, vous pouvez définir fetch-depth: 0 pour récupérer "tout l'historique de toutes les balises et branches". Pour les gros dépôts, vous pourriez vouloir ajuster cela, par exemple, en exécutant plutôt git fetch --shallow-since=<date> après le clone superficiel, mais pour les petits dépôts, cela devrait être suffisant.

steps:
  - uses: actions/checkout@v3
    with:
      fetch-depth: 0

0voto

ptsivakumar Points 21

Si vous utilisez Visual S2019, créez une nouvelle branche locale comme indiqué ci-dessous, puis poussez les modifications vers le dépôt.

VS2019 local branch

0voto

Ashwini Points 186

Le problème vient du fait que la branche locale n'est pas à jour par rapport à la branche master, c'est pourquoi nous sommes censés retirer le code avant de le pousser dans la branche git.

git add .
git commit -m 'Comments to be added'
git pull origin master
git push origin master

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X