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
.
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
.
Utilisez cette commande dans le terminal
git Push -f Origin master
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
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.
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 :)
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.
Force à pousser
maître git Push -f Origin
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.
Vous devez entrer:
$ git pull
$ git fetch
$ git merge
Si vous utilisez un git Push Origin master --force
, vous aurez un gros problème.
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
Vous pouvez essayer ceci: git pull Origin master --rebase