git: updates zijn afgewezen omdat de afstandsbediening werk bevat dat je niet lokaal hebt

Ik werk in een team met een paar ontwikkelaars die git op BitBucket gebruiken. We werken allemaal aan een devbranch en pushen niet naar mastertot een release.

Een van de ontwikkelaars heeft onjuiste code gemaakt die mijn eigen code per ongeluk heeft overschreven, en nu probeer ik de juiste code terug naar de repo te pushen. Ik lees nu al een paar dagen over deze fout, ik kan niet meer naar de repo pushen omdat ik de volgende foutmelding krijg:

! [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.

Ik volg de instructies en pull, maar dan krijg ik een samenvoegconflict. Na het invoeren van een bericht voor het samenvoegconflict, is mijn lokale code nu de onjuiste code die de andere ontwikkelaar per ongeluk heeft geüpload (zoals verwacht van de pull). Dus vervang ik de verkeerde code door de back-up die ik heb gekopieerd voordat ik de commit heb gedaan, en wanneer ik opnieuw probeer te pushen, krijg ik dezelfde foutmelding.

Het is echt frustrerend, ik wil mijn team echt helpen en een bijdrage leveren, maar door deze fout kan ik dat niet. Weet iemand hoe dit probleem op te lossen? Ik zou alle hulp zeer op prijs stellen.

Dit zijn de commando’s die ik uitvoer om te committen, als het iemand helpt:

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

Ik had gedacht dat als ik me aan deze volgorde hield, ik geen samenvoegconflicten zou krijgen. Ik denk dat ik het mis had. Nogmaals bedankt

Bijwerken:
Ik moet hieraan toevoegen dat ik een paar uur op Google en stackoverflow heb gezocht en verschillende instructies heb gevolgd, maar ik kan nog steeds niet pushnaar de dev-tak.


Antwoord 1, autoriteit 100%

git pull <remote> master:devzal de remote/masterbranch ophalen en deze samenvoegen met uw local/devbranch.

git pull <remote> devzal de remote/devbranch ophalen, en deze samenvoegen met je huidige branch.

Ik denk dat je zei dat de conflicterende commit zich op remote/devbevindt, dus dat is de branch die je waarschijnlijk wilde ophalen en samenvoegen.

In dat geval was je het conflict niet echt aan het mergen in je lokale branch, wat een beetje raar is omdat je zei dat je de verkeerde code in je werkkopie zag. Misschien wil je controleren wat er aan de hand is in remote/master.


Antwoord 2, autoriteit 92%

Je kunt alle controles die git doet overschrijven door “force push” te gebruiken. Gebruik deze opdracht in terminal

git push -f origin master

U negeert echter mogelijk het bestaande werk dat zich in remote bevindt – u herschrijft in feite de geschiedenis van de remote om precies hetzelfde te zijn als uw lokale kopie.


Antwoord 3, autoriteit 94%

Het gebeurt wanneer we proberen naar een externe repository te pushen, maar een nieuw bestand op remote hebben gemaakt dat nog niet is opgehaald, laten we zeggen Readme. In dat geval, zoals de fout zegt

git weigert de update

omdat we geen bijgewerkte afstandsbediening hebben gebruikt in onze lokale omgeving.
Dus Take pull first from remote

git pull

Het zal je lokale repository updaten en een nieuw Readme-bestand toevoegen.
Push vervolgens bijgewerkte wijzigingen naar de afstandsbediening

git push origin master

Antwoord 4, autoriteit 31%

Dit gebeurt meestal wanneer de repo enkele items bevat die er niet lokaal zijn. Dus om onze wijzigingen door te voeren, moeten we in dit geval de externe wijzigingen integreren en vervolgens pushen.

Dus maak een pull vanop afstand

git pull origin master

Duw vervolgens wijzigingen naar die afstandsbediening

git push origin master

Antwoord 5, autoriteit 16%

Duwen om te duwen

git push -f origin master


Antwoord 6, autoriteit 15%

Ik heb het opgelost, ik weet niet precies wat ik heb gedaan.
Ik probeerde gewoon duwen en trekken met:

git pull <remote> dev
in plaats van
git pull <remote> master:dev

Ik hoop dat dit iemand helpt als ze hetzelfde probleem hebben.


Antwoord 7, autoriteit 15%

Je kunt dit proberen: git pull origin master --rebase


Antwoord 8, autoriteit 11%

Je moet het volgende invoeren:

$ git pull
$ git fetch 
$ git merge

Als je een git push origin master --forcegebruikt, heb je een groot probleem.


Antwoord 9, autoriteit 8%

Eigenlijk is github veel eenvoudiger dan we denken en het gebeurt absoluut wanneer we proberen te push, zelfs nadat we expliciet enkele bestanden in onze git-repository hebben geplaatst, dus probeer het gewoon om het probleem op te lossen. .

: git pull

en dan..

: git push

Opmerking: als je per ongeluk in vim-editor vastzit nadat je je repository hebt opgehaald, maak je dan geen zorgen, sluit vim-editor en probeer push 🙂


Antwoord 10, autoriteit 8%

Ik heb onderstaande stappen uitgevoerd. eindelijk werkt het prima.

Stappen

1) git init

2) git-status (om de status te controleren)

3) git add . (voeg alle wijzigingsbestanden toe (.))

4) git commit -m "<pass your comment>"

5) git remote add origin "<pass your project clone url>"

6) git pull –allow-unrelated-histories "<pass your project clone url>"master

7) git push -u "<pass your project clone url>"master


Antwoord 11, autoriteit 8%

Zo heb ik dit probleem opgelost:

  1. git pull origin master
  2. git push origin master

Dit gebeurt meestal wanneer uw externe vertakking niet is bijgewerkt.
En als u hierna een foutmelding krijgt zoals “Voer een vastleggingsbericht in”
Raadpleeg dit(Voor mij werkte het xiaohu Wang-antwoord :))


Antwoord 12, autoriteit 3%

Ik had deze fout en het was omdat er een update op de server was, maar SourceTree liet geen beschikbare updates zien (mogelijk omdat ik offline was toen het voor het laatst werd gecontroleerd). Dus ik heb de bronstructuur vernieuwd en nu worden er 2 items weergegeven om te pushen in plaats van 1 item.

Dus druk op vernieuwenof pullals je deze foutmelding krijgt en probeer het opnieuw.


Antwoord 13, autoriteit 3%

git pull –rebase origin master

git push origin master


git push -f origin master

Waarschuwinggit push -f origin master

  • duwt krachtig op bestaande repository en verwijdert ook eerdere repositories, dus als u geen eerdere versies nodig heeft, kan dit nuttig zijn

Antwoord 14

Ik had hetzelfde probleem. Het gebeurde dat ik een .Readme-bestand in de repository heb gemaakt zonder het eerst te trekken.

Misschien wil je het .Readme-bestand verwijderen of eruit halen voordat je gaat pushen.


Antwoord 15

De fout komt mogelijk door de verschillende structuur van de code die u pleegt en die aanwezig is op GitHub. U kunt verwijzen naar: Hoe om te gaan met “weigeren om niet-gerelateerde geschiedenissen samen te voegen” fout:

$ git pull --allow-unrelated-histories
$ git push -f origin master

Antwoord 16

De beste optie voor mij en het werkt en eenvoudig

git pull --rebase

dan

git push

veel succes


Antwoord 17

u kunt gebruiken

git pull --rebase <your_reponame> <your_branch>

dit zal helpen als u enkele wijzigingen heeft die nog niet zijn geregistreerd in uw lokale opslagplaats. vooral README.md

Other episodes