web-dev-qa-db-fra.com

git: les mises à jour ont été rejetées car la télécommande contient des travaux que vous n'avez pas localement

Je travaille sur une équipe avec quelques développeurs utilisant git sur BitBucket. Nous travaillons tous sur une branche dev et ne poussons pas vers master jusqu'à la publication.

Un des développeurs a commis un code incorrect qui a écrasé le mien par accident. Je tente maintenant de renvoyer le code correct au référentiel. Cela fait quelques jours que je lis cette erreur, je ne peux plus appuyer sur le dépôt car je reçois l'erreur suivante:

 ! [rejected]        master -> dev (fetch first)
error: failed to Push some refs to 'https://[email protected]/repo_user/repo_name.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git Push --help' for details.

Je suis les instructions et pull, mais je reçois alors un conflit de fusion. Après avoir entré un message pour le conflit de fusion, mon code local est maintenant le code incorrect que l'autre développeur a chargé par accident (comme prévu dans la variable pull). Je remplace donc le code incorrect par la copie de sauvegarde que j'ai copiée avant la validation et, lorsque j'essaie de réappuyer sur Push, j'obtiens la même erreur. 

C'est vraiment frustrant, je veux vraiment aider mon équipe et contribuer, mais je ne peux pas à cause de cette erreur. Est-ce que quelqu'un sait comment résoudre ce problème? J'apprécierais beaucoup toute aide.

Voici les commandes que je lance pour commettre, si cela aide quelqu'un:

git pull remotename master:dev
git add --all
git commit -m "some message"
git pull remotename master:dev
git Push remotename master:dev

J'aurais pensé que si je gardais cet ordre, je ne recevrais pas de conflits de fusion. Je suppose que je me suis trompé. Merci encore

Mise à jour: Je dois ajouter que j'ai cherché quelques heures sur Google et stackoverflow et suivi des instructions différentes, mais je ne peux toujours pas Push dans la branche dev.

41
delos

git pull <remote> master:dev va chercher la branche remote/master et la fusionner dans votre branche local/dev.

git pull <remote> dev va chercher la branche remote/dev et la fusionner dans votre branche actuelle.

Je pense que vous avez dit que le commit en conflit est sur remote/dev, c'est donc la branche que vous avez probablement eu l'intention d'extraire et de fusionner.

Dans ce cas, vous n'étiez pas en train de fusionner le conflit dans votre branche locale, ce qui est assez étrange puisque vous avez dit avoir vu le code incorrect dans votre copie de travail. Vous voudrez peut-être vérifier ce qui se passe dans remote/master.

23
Jeff

Utilisez cette commande dans le terminal

git Push -f Origin master

38
Donal

Cela se produit lorsque nous essayons de pousser dans un référentiel distant mais que nous avons créé un nouveau fichier sur distant qui n'a pas encore été extrait, disons Readme. Dans ce cas, comme le dit l'erreur 

git rejette la mise à jour

comme nous n’avons pas pris la mise à jour à distance dans notre environnement local .

git pull

Il mettra à jour votre référentiel local et ajoutera un nouveau fichier Readme . Ensuite, envoyez les modifications mises à jour à distance.

git Push Origin master
17
Himanshu

Je l'ai réparé, je ne suis pas vraiment sûr de ce que j'ai fait. J'ai essayé simplement de pousser et de tirer en utilisant:

git pull <remote> dev au lieu de git pull <remote> master:dev

J'espère que cela aidera quelqu'un s'il a le même problème.

5
delos

En fait, github est beaucoup plus simple que nous le pensons et cela se produit absolument chaque fois que nous essayons de Push même après avoir explicitement inséré des fichiers dans notre dépôt git, afin de résoudre le problème, essayez simplement ...

: git pull

et alors..

: git push

Remarque: si vous êtes coincé accidentellement dans l'éditeur vim après avoir extrait votre référentiel, ne vous inquiétez pas, fermez simplement l'éditeur vim et essayez Push :) 

3
deepbchudasama

J'ai eu cette erreur et c'est parce qu'il y avait une mise à jour sur le serveur mais SourceTree n'affichait aucune mise à jour disponible (peut-être parce que j'étais hors ligne lors de la dernière vérification). J'ai donc actualisé l'arborescence des sources et maintenant, il affiche 2 éléments en mode Push au lieu d'un élément. 

Veillez donc à appuyer surrefreshoupullsi vous obtenez cette erreur, puis réessayez. 

2
1.21 gigawatts

Force à pousser

maître git Push -f Origin

0
Samir Poudel

J'ai d'abord eu un projet SSDT VS. Je voulais pousser le projet comme je l'avais à Github. Je voulais que Push soit la version initiale de mon référentiel à partir de la branche principale. La suggestion de Donal de maître de git Push -f Origin était le moyen le plus simple (que j'ai vu) d'y parvenir. Comme je n'avais pas à craindre de réécrire quoi que ce soit, cela semblait logique.

0
cromastro

Vous devez entrer:

$ git pull
$ git fetch 
$ git merge

Si vous utilisez un git Push Origin master --force, vous aurez un gros problème.

0
gaoyehua

Cela se produit généralement lorsque le référentiel contient des éléments qui ne sont pas présents localement. Donc, afin de pousser nos modifications, dans ce cas, nous devons intégrer les modifications à distance, puis pousser.

Alors créez un pull de la télécommande

git pull Origin master

Puis appuyez sur les modifications à cette télécommande

git Push Origin master
0
Sravya

Vous pouvez essayer ceci: git pull Origin master --rebase

0
Eduardo Ramos