Github "Les mises à jour ont été rejetées car la télécommande contient du travail que vous n'avez pas"


177

J'ai créé un nouveau référentiel, je l'ai cloné, j'ai ajouté des fichiers au répertoire, je les ai ajoutés avec add -A je les ai , j'ai validé des modifications, et lorsque j'essaye de pousser en utilisant, git push <repo name> masterj'obtiens "Les mises à jour ont été rejetées parce que la télécommande contient du travail que vous n'avez pas".

Cela ne semble pas logique car il s'agit d'un nouveau dépôt et ne contient qu'un fichier readme.

Réponses:


309

Cela se produit si vous avez initialisé un nouveau dépôt github avec READMEet / ou LICENSEfichier

git remote add origin [//your github url]

//pull those changes

git pull origin master 

// or optionally, 'git pull origin master --allow-unrelated-histories' if you have initialized repo in github and also committed locally

//now, push your work to your new repo

git push origin master

Vous pourrez maintenant pousser votre dépôt vers github. Fondamentalement, vous devez fusionner ces nouveaux fichiers initialisés avec votre travail. git pullrécupère et fusionne pour vous. Vous pouvez également récupérer et fusionner si cela vous convient.


7
J'ai créé une vidéo YouTube avec une explication plus détaillée et deux suggestions pour éviter ce problème en premier lieu.
Kevin Markham

16
Pour la commande de fusion, j'ai besoin d'utilisergit pull origin master --allow-unrelated-histories
Luciano Marqueto

J'obtiens "fatal: refus de fusionner des histoires non liées"
Sergi

4
@Sergi essayezgit pull origin master --allow-unrelated-histories
palerdot

101

L'erreur vient probablement de la structure différente du code que vous validez et de celui présent sur GitHub. Cela crée des conflits qui peuvent être résolus par

git pull

Résolution des conflits de fusion:

git push

Si vous confirmez que votre nouveau code est correct, vous pouvez utiliser:

git push -f origin master

-fsignifie «force commit».


13
'git push -f origin master' -this help
Saurabh

4
git push -f écrase l'historique distant avec votre historique local, soyez prudent lorsque vous l'utilisez. Surtout sur les référentiels publics.
Andre

updates-were-rejectedse produit également si vous avez effectué des modifications dans le dépôt github dans la télécommande, par exemple: apporté des modifications dans le fichier readme à l'aide de github gui. Et puis essayé de pousser votre nouveau travail sur github, il affichera ce message indiquant que les modifications que vous avez apportées à distance mais qu'il n'est pas présent localement.
Deke

13

Si c'est ta première poussée

change juste le

git push <repo name> master

changez-le comme ça!

git push -f <repo name> master

1
Cela supprime les fichiers comme initialement créés dans l'origine. Utilisez plutôt un git pullavant pour obtenir des fichiers distants et fusionner ensuite votre commit. Tout comme les états de réponse acceptés
JayJay

@jayjaybricksoft Merci pour votre commentaire. C'est la première poussée, donc remplacer les fichiers d'origine est OK.
Mahyar


2

Les réponses fournies n'ont pas fonctionné pour moi.

J'avais un dépôt vide sur GitHub avec uniquement le fichier LICENSE et un seul commit localement. Ce qui a fonctionné était:

$ git fetch
$ git merge --allow-unrelated-histories
Merge made by the 'recursive' strategy.
 LICENSE | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)
 create mode 100644 LICENSE

Aussi avant mergeque vous souhaitiez:

$ git branch --set-upstream-to origin/master
Branch 'master' set up to track remote branch 'master' from 'origin'.

0

J'ai suivi ces étapes:

Tirez le maître:

git pull origin master

Cela synchronisera votre dépôt local avec le dépôt Github. Ajoutez votre nouveau fichier puis:

git add .

Validez les modifications:

git commit -m "adding new file  Xyz"

Enfin, appuyez sur le master d'origine:

git push origin master

Actualisez votre dépôt Github, vous verrez les fichiers nouvellement ajoutés.


0

Si vous utilisez Visual S2019, créez une nouvelle branche locale comme indiqué ci-dessous, puis transmettez les modifications au référentiel Succursale locale VS2019

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.