Git push afgewezen “niet-snel vooruit”

Ik ben vrij nieuw in git, maar gebruik het momenteel om onze code in een teamomgeving te beheren. Ik had wat problemen met rebasen en ik heb ze opgelost met:

git checkout --ours filename.txt
git add filename.txt
git rebase --continue

Nu wil ik mijn wijzigingen pushen, en daarom voer ik de volgende opdracht uit:

$ git push origin feature/my_feature_branch

Heeft me de volgende foutmelding gegeven:

To ssh://[email protected]:7999/repo/myproject.git
 ! [rejected]        feature/my_feature_branch -> feature/my_feature_branch (non-fast-forward)
error: failed to push some refs to 'ssh://[email protected]:7999/repo/myproject.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

Wat kan ik doen om van deze fout af te komen?

Opmerking: ik vermijd het gebruik van de optie --forcezoveel mogelijk.


Antwoord 1, autoriteit 100%

Het lijkt erop dat iemand nieuwe commits heeft gepusht tussen je laatste git fetchen git push. In dit geval moet u uw stappen herhalen en my_feature_branchnog een keer opnieuw baseren.

git fetch
git rebase feature/my_feature_branch
git push origin feature/my_feature_branch

Na het git fetchraad ik aan om de situatie te onderzoeken met gitk --all.


Antwoord 2, autoriteit 30%

Waarschijnlijk heb je de externe wijzigingen niet opgehaald voordat de rebase is uitgevoerd of heeft iemand nieuwe wijzigingen gepusht (terwijl je aan het rebasen was en probeerde te pushen). Probeer deze stappen:

#fetching remote 'feature/my_feature_branch' branch to the 'tmp' local branch 
git fetch origin feature/my_feature_branch:tmp
#rebasing on local 'tmp' branch
git rebase tmp
#pushing local changes to the remote
git push origin HEAD:feature/my_feature_branch
#removing temporary created 'tmp' branch
git branch -D tmp

3, Autoriteit 23%

Ik had dit probleem!
Ik heb geprobeerd: Git Fetch + Git samenvoegen, maar niet opgelost!
Ik heb geprobeerd: git pull, en ook niet opgelost

Dan heb ik dit geprobeerd en mijn probleem opgelost (is vergelijkbaar met antwoord van ingenieur):

git fetch origin master:tmp
git rebase tmp
git push origin HEAD:master
git branch -D tmp

4, Autoriteit 14%

Ik ben laat op het feest, maar ik vond een aantal nuttige instructies in Github Help pagina en ik wilde ze hier delen.

Soms kan Git uw wijziging niet in een externe repository maken zonder de commits te verliezen. Wanneer dit gebeurt, wordt uw push geweigerd.

Als een andere persoon naar dezelfde tak is geduwd als u, kunt Git uw wijzigingen niet duwen:

$ git push origin master
To https://github.com/USERNAME/REPOSITORY.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'https://github.com/USERNAME/REPOSITORY.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.

U kunt dit oplossen door de wijzigingen op de afstandsbediening op te halen en samen te voegen met de wijzigingen die u lokaal hebt gemaakt:

$ git fetch origin
# Fetches updates made to an online repository
$ git merge origin YOUR_BRANCH_NAME
# Merges updates made online with your local work

Of je kunt gewoon git pullgebruiken om beide commando’s tegelijk uit te voeren:

$ git pull origin YOUR_BRANCH_NAME
# Grabs online updates and merges them with your local work

Antwoord 5, autoriteit 11%

Ik had een soortgelijk probleem en heb het opgelost met:
git pull origin


Antwoord 6, autoriteit 8%

probeer deze opdracht

$ git push -f -u origin <name of branch>

d.w.z. $ git push -f -u origin master


Antwoord 7

Schrijfslot op gedeelde lokale repository

Ik had dit probleem en geen van de bovenstaande adviezen heeft me geholpen. Ik heb alles correct kunnen ophalen. Maar pushen mislukte altijd. Het was een lokale repository in de Windows-map met verschillende clients die ermee werkten via het VMWare-stuurprogramma voor gedeelde mappen. Het bleek dat een van de systemen Git-repository vergrendelde voor schrijven. Na het stoppen van het betreffende VMWare-systeem, waardoor het slot werd gerepareerd, is alles direct gerepareerd. Het was bijna onmogelijk om erachter te komen welk systeem de fout veroorzaakt, dus ik moest ze een voor een stoppen totdat het lukte.


Antwoord 8

Nou, ik heb het advies hier gebruikt en het verpestte me omdat het mijn lokale code rechtstreeks samenvoegde tot master. …. dus neem het allemaal met een korreltje zout. Mijn collega zei dat het volgende hielp bij het oplossen van het probleem, dat nodig was om mijn branch opnieuw te verwijzen.

git branch --set-upstream-to=origin/feature/my-current-branch feature/my-current-branch

Antwoord 9

Doe in Eclipse het volgende:

GIT-opslagplaatsen > Afstandsbedieningen > Oorsprong > Klik met de rechtermuisknop en zeg ophalen

GIT-opslagplaatsen > Op afstand volgen > Selecteer je branch en zeg samenvoegen

Ga naar het project, klik met de rechtermuisknop op uw bestand en zeg ophalen van stroomopwaarts.


10

  1. Verplaats de code naar een nieuwe filiaal – Git Branch -b TMP_BRANCHYOUWANTMERGEDIN
  2. Wijzig in de branche die u wilt samenvoegen aan – Git Checkout MyCoolbranch
  3. Reset de branche die u wilt samenvoegen aan – Git Branch Reset –Hard Head
  4. Voeg de TMP-tak samen in de gewenste tak – Git Branch Merge TMP_BRANCHYOUWANTMERGEDIN
  5. duwen naar herkomst

11

Hier is een andere oplossing om dit probleem op te lossen

>git pull
>git commit -m "any meaning full message"
>git push

12

  1. Maak de lokale commit ongedaan. Dit maakt de commit ongedaan en bewaart de veranderingen in de werkkopie
git reset --soft HEAD~1
  1. Trek de laatste wijzigingen toe
git pull
  1. Nu kunt u uw wijzigingen verbinden op de nieuwste code

Other episodes