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.

nodwj
la source

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.

pâle
la source
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».

Kartikey Kumar Srivastava
la source
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
Mahyar
la source
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'.
koral
la source
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.

Darshan Jain
la source
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

ptsivakumar
la source