Ik probeer mijn project te pushen (alle bestanden in een nieuwe repository). Ik volg de stappen, maar als ik push met git push -u origin master
krijg ik deze foutmelding:
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to '[email protected]:asantoya/projectnewbies.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again. See the
'Note about fast-forwards' section of 'git push --help' for details.
Ik kreeg deze fout vaak en weet niet wat ik moet doen.
Antwoord 1, autoriteit 100%
Zoals de foutmelding zegt: git pull
voordat je probeert om git push
te gebruiken. Blijkbaar loopt uw ​​lokale vestiging niet synchroon met uw trackingafdeling.
Afhankelijk van de projectregels en je workflow wil je misschien ook git pull --rebase
gebruiken.
Antwoord 2, autoriteit 90%
OPMERKING: dit is nooit een aanbevolen gebruik van git. Hiermee worden wijzigingen op de afstandsbediening overschreven. Doe dit alleen als u 100% zeker weet dat uw lokale wijzigingen naar de externe master moeten worden gepusht.
Probeer dit: git push -f origin master
Antwoord 3, autoriteit 10%
dit commando werkte goed voor mij
git push -f origin master
Antwoord 4, autoriteit 10%
git push -f origin master
gebruik brute kracht 😉
Hoogstwaarschijnlijk probeer je een lokale map toe te voegen die je hebt gemaakt voordat je de repo op git aanmaakte.
Antwoord 5, autoriteit 8%
Ik heb deze fout zojuist ontvangen.
Ik heb een github-repository gemaakt nadat ik mijn lokale git-repository had gemaakt, dus ik moest de wijzigingen in local accepteren voordat ik naar github pushte. In dit geval was de enige wijziging het leesmij-bestand dat werd gemaakt als optionele stap bij het maken van de github-repository.
git pull https://github.com/*username*/*repository*.git master
repository-URL wordt hier vandaan gehaald op de github-pagina van het project:
Ik heb toen opnieuw geïnitialiseerd (dit is misschien niet nodig)
git init
git add .
git commit -m "update"
Druk vervolgens op :
git push
Antwoord 6, autoriteit 5%
Als git pull
niet helpt, dan heb je waarschijnlijk je wijzigingen (A) gepusht en daarna git commit --amend
gebruikt om nog wat wijzigingen toe te voegen ( B). Daarom denkt git dat je de geschiedenis kunt verliezen – het interpreteert B als een andere commit ondanks dat het alle wijzigingen van A bevat.
B
/
---X---A
Als niemand de repo wijzigt na A
, dan kun je git push --force
doen.
Als er echter wijzigingen zijn na A
van een andere persoon:
B
/
---X---A---C
dan moet je die personenwijzigingen van A
naar B
(C
->D
) herberekenen.
B---D
/
---X---A---C
of los het probleem handmatig op. Ik had nog niet bedacht hoe ik dat moest doen.
Antwoord 7, autoriteit 5%
ik had een nieuwe repo gemaakt in github en ik had hetzelfde probleem, maar het had ook een probleem tijdens het ophalen, dus dit werkte voor mij.
maar dit wordt niet geadviseerd in repo’s die al veel codes hebben zoals deze
kan alles verpesten
git push origin master --force
Antwoord 8, autoriteit 5%
gebruik dit commando:
git pull --allow-unrelated-histories <nick name of repository> <branch name>
vind ik leuk:
git pull --allow-unrelated-histories origin master
deze fout treedt op wanneer projecten geen gemeenschappelijke voorouder hebben.
Antwoord 9, autoriteit 5%
WAARSCHUWING:
Gaan voor een ‘git pull
‘ is niet ALTIJD een oplossing, dus wees voorzichtig. U kunt dit probleem tegenkomen (het probleem dat wordt genoemd in de Q) als u opzettelijk uw repositorygeschiedenis hebt gewijzigd. In dat geval verwart git je geschiedeniswijzigingen met nieuwe wijzigingen in je externe repo. Je zou dus voor een git push --force
moeten gaan, omdat het aanroepen van git pull
alle wijzigingen die je met opzet in je geschiedenis hebt aangebracht, ongedaan zal maken.
Antwoord 10, autoriteit 3%
Dit komt omdat je wat wijzigingen hebt aangebracht in je master, zodat het project je vraagt ​​om eerst te pullen. Als je het toch wilt pushen, kun je brute kracht gebruiken door dit te typen:
git push -f origin master
Vergeet niet om eerst uw wijzigingen vast te leggen:
git add .
git commit -m "Your commit message"
Antwoord 11, autoriteit 3%
Probeer dit commando: “git pull origin master”
Het werkte voor mij.
Controleer deze link: https://help.github. com/articles/dealing-with-non-fast-forward-errors
Antwoord 12, autoriteit 2%
Je moet doen
git branch
als de uitvoer zoiets is als:
* (no branch)
master
doe dan
git checkout master
Zorg ervoor dat je geen lopende vastleggingen hebt, want als je uitcheckt, gaan alle niet-vastgelegde wijzigingen verloren.
Antwoord 13, autoriteit 2%
! [afgewezen] meester -> master (niet vooruitspoelen)
Geen paniek, dit is zeer eenvoudig op te lossen. Het enige wat u hoeft te doen is een pull uit te geven en uw branch zal snel vooruitspoelen:
$ git pull myrepo master
Probeer dan opnieuw te pushen en alles zou in orde moeten zijn:
$ git push github master
Antwoord 14, autoriteit 2%
Dit overkwam mij toen ik op de ontwikkel-branch zat en mijn master-branch is niet met de laatste update.
Dus toen ik probeerde om git push vanuit de ontwikkeltak te gebruiken, had ik die fout.
Ik heb het opgelost door over te schakelen naar master branch, git pull, en dan terug te gaan om branch te ontwikkelen en git push.
$ git fetch && git checkout master
$ git pull
$ git fetch && git checkout develop
$ git push
Antwoord 15, autoriteit 2%
Ik had dit probleem op een ontwikkelmachine. De dev
branch pushte prima, maar de
de master
branch gaf me (terwijl git push
ing toen ik in de dev
branch was):
! [rejected] master -> master (non-fast-forward)
Dus ik probeerde:
git checkout master
git pull
Dat gaf me:
You asked me to pull without telling me which branch you
want to merge with, and 'branch.master.merge' in
your configuration file does not tell me, either.
Ik ontdekte dat de master branch ontbrak in .git/config
en voegde toe:
[branch "master"]
remote = origin
merge = refs/heads/master
Daarna werkte git push
ook prima op de dev
branch.
Antwoord 16, autoriteit 2%
Mijn afstandsbediening was niet gesynchroniseerd met de lokale, dus dit werkte voor mij
git pull --rebase
en zorg ervoor dat wanneer je git pull
opnieuw doet, het moet zeggen Al up-to-date
en nu ben je klaar om naar de oorsprong te pushen
ervan uitgaande dat u al git remote add origin remote repository URL
doen
`git push origin master`
De schermafbeelding zegt alles
U kunt dit ook doen
- git stash (slaat tijdelijk niet-toegewezen werk op)
- git pull (maak je lokale en externe synchroon)
- git stash pop (geef je ongecommitteerde wijzigingen terug)
- git push
Antwoord 17
Ik had hetzelfde probleem.
Ik gebruik Git Totoise.
Klik met de rechtermuisknop ->TotoiseGit -> Opruimen .
Nu kun je naar Github pushen
Bij mij werkte het prima 😀
Antwoord 18
Dit komt omdat je tegenstrijdige wijzigingen hebt aangebracht in de master. En je repository-server kan je dat niet vertellen met deze woorden, dus het geeft deze fout omdat het niet aan hem is om deze conflicten voor je op te lossen, dus hij vraagt ​​je om het zelf te doen. Als ?
1- git pull
Dit zal uw code van uw repository samenvoegen met uw code van uw sitemaster.
Dus conflicten worden getoond.
2- behandel deze handmatige conflicten.
3-
git push origin master
En presto, je probleem is opgelost.
Antwoord 19
Dit kan ook worden veroorzaakt door een naamfout die is veroorzaakt bij het geven van een naam aan de opslagplaats.
Als een van de bovenstaande antwoorden niet heeft gewerkt. Dit werkte voor mij:
Verwijder die repo en maak een nieuwe en probeer de volgende opdrachten opnieuw:
cd 'Local Directory Path'
git remote add origin *your_git_name.git*
git push -u origin master
als het toevoegen van oorsprongshows al bestaat, gebruik dan dit:
git remote set-url origin *your_git_name.git*
Antwoord 20
Het enige dat ik kon oplossen, was door de lokale en git repo te verwijderen en aan beide kanten weer hetzelfde te maken. Werkt voorlopig prima.
Antwoord 21
Als iemand deze fout heeft terwijl hij probeert naar heroku te pushen, vervang dan gewoon ‘origin’ door ‘heroku’
zoals dit:
git push -f heroku master
Antwoord 22
Probeer dit, in mijn geval werkt het
git rebase --abort