wake-up-neo.com

Git Push abgelehnt "Nicht-Schnellvorlauf"

Ich bin relativ neu bei git und verwende es derzeit, um unseren Code in einer Teamumgebung zu verwalten. Ich hatte einige Probleme beim Umbasieren und habe sie mit behoben

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

Nun möchte ich meine Änderungen pushen und so den folgenden Befehl ausführen

$ git Push Origin feature/my_feature_branch

gibt mir folgenden Fehler:

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.

Was kann ich tun, um den Fehler zu beseitigen?

P.S. : Ich vermeide es, die --force-Option so gut wie möglich zu verwenden.

55
Frankline

Es sieht so aus, als ob jemand zwischen Ihrem letzten git fetch und git Push neue Festschreibungen eingegeben hat. In diesem Fall müssen Sie Ihre Schritte wiederholen und my_feature_branch noch einmal neu abstimmen.

git fetch
git rebase feature/my_feature_branch
git Push Origin feature/my_feature_branch

Nach dem git fetch empfehle ich, die Situation mit gitk --all zu untersuchen.

53
Boris Brodski

Wahrscheinlich haben Sie die Remote-Änderungen nicht vor dem Rebase-Abruf abgerufen oder jemand hat neue Änderungen vorgenommen (während Sie neu basierten und versuchten, Push auszuführen). Versuchen Sie diese Schritte:

#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
19
Engineer

Ich hatte dieses Problem! Ich habe versucht: Git holen und Git zusammenführen, aber nicht gelöst! Ich habe versucht: Git ziehen und auch nicht gelöst

Dann habe ich es versucht und mein Problem gelöst (ähnlich der Antwort des Engineers):

git fetch Origin master:tmp
git rebase tmp
git Push Origin HEAD:master
git branch -D tmp
10
Aurelio A

Ich bin zu spät zur Party, aber ich habe einige nützliche Anweisungen in der github-Hilfeseite gefunden und ich wollte sie hier teilen.

Manchmal kann Git Ihre Änderungen nicht an einem Remote-Repository vornehmen, ohne Commits zu verlieren. In diesem Fall wird Ihr Push abgelehnt.

Wenn eine andere Person in den gleichen Zweig wie Sie gepusht hat, kann Git Ihre Änderungen nicht pushen:

$ 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.

Sie können dies beheben, indem Sie die am Remote-Zweig vorgenommenen Änderungen mit den lokal vorgenommenen Änderungen abrufen und zusammenführen:

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

Oder Sie können einfach git pull verwenden, um beide Befehle gleichzeitig auszuführen:

$ git pull Origin YOUR_BRANCH_NAME
# Grabs online updates and merges them with your local work
3
Bilal

Ich hatte ein ähnliches Problem und löste es mit: Git pull Origin 

2
William Rossier

Schreibsperre für freigegebenes lokales Repository

Ich hatte dieses Problem und keiner der oben genannten Ratschläge hat mir geholfen. Ich konnte alles richtig abholen. Aber Push ist immer fehlgeschlagen. Es war ein lokales Repository im Windows-Verzeichnis, in dem mehrere Clients über den VMWare-Treiber für freigegebene Ordner mit ihm zusammenarbeiteten. Es schien, dass eines der Systeme das Git-Repository zum Schreiben gesperrt hat. Nach dem Stoppen des relevanten VMWare-Systems, das die Sperre verursachte, wurde alles sofort repariert. Es war fast unmöglich herauszufinden, welches System den Fehler verursacht, so dass ich sie nacheinander aufhalten musste, bis sie erfolgreich waren.

1
Boris Zinchenko

Nun, ich habe den Rat hier benutzt und es hat mich vermasselt, als er meinen lokalen Code direkt mit dem Master zusammenführte. .... also nimm alles mit einem Körnchen Salz. Mein Kollege sagte, dass das folgende Problem geholfen habe, das Problem zu lösen, das notwendig war, um meine Filiale neu zu gründen.

 git branch --set-upstream-to=Origin/feature/my-current-branch feature/my-current-branch
1
Mike Q

In Eclipse gehen Sie wie folgt vor:

GIT-Repositories> Remotes> Origin> Klicken Sie mit der rechten Maustaste und sagen Sie "Abrufen"

GIT-Repositories> Remote-Tracking> Wählen Sie Ihren Zweig aus und sagen Sie "Zusammenführen"

Gehen Sie zum Projekt, klicken Sie mit der rechten Maustaste auf Ihre Datei und sagen Sie "Abholen aus dem Upstream".

0
MansoorShaikh