it-swarm.com.de

git-Fehler: Fehler beim Schieben einiger Referenzen

Aus irgendeinem Grund kann ich jetzt nicht pushen, wohingegen ich es gestern tun könnte ... Vielleicht habe ich mich mit Konfekten oder so etwas vermasselt.

Das ist, was passiert:

Wenn ich den Git-Origin-Master verwende

gitbashscr

Wie mein Arbeitsverzeichnis und Remote-Repository aussieht:

enter image description here

228
hikki

Wenn das GitHub-Repo neue Commits erhalten hat, während Sie lokal gearbeitet haben, würde ich Folgendes empfehlen:

git pull --rebase
git Push

Die vollständige Syntax lautet:

git pull --rebase Origin master
git Push Origin master

Auf diese Weise würden Sie Ihre lokalen Festschreibungen (den --rebase-Teil) über dem neu aktualisierten Origin/master (oder Origin/yourBranch: git pull Origin yourBranch) wiedergeben.

Ein vollständigeres Beispiel finden Sie im Kapitel 6 Ziehen mit Rebase des Git Pocket Book .

Ich würde empfehlen:

git Push -u Origin master

Dadurch würde eine Tracking-Beziehung zwischen Ihrem lokalen Master-Zweig und seinem Upstream-Zweig hergestellt.
Danach kann jeder zukünftige Push für diesen Zweig mit einem einfachen Befehl erfolgen:

git Push

Siehe " Warum muss ich explizit einen neuen Zweig schieben? ".


Da das OP bereits zurücksetzt und sein Festschreiben vornimmt auf Origin/master:

git reset --mixed Origin/master
git add .
git commit -m "This is a new commit for what I originally planned to be amended"
git Push Origin master

Es ist nicht notwendig, pull --rebase.

Hinweis: git reset --mixed Origin/master kann auch git reset Origin/master geschrieben werden, da die Option --mixed bei Verwendung von git reset die Standardeinstellung ist.

352
VonC

Hat jemand versucht:

git Push -f Origin master

Das sollte das Problem lösen.

EDIT: Basierend auf @Mehdis Kommentar unten muss ich etwas über —force pushing klären. Der obige Befehl git funktioniert nur beim ersten Commit sicher. Wenn zuvor Commits, Pull-Requests oder Verzweigungen vorhanden waren, wird dies zurückgesetzt und auf Null gesetzt. Wenn ja, lesen Sie bitte die ausführliche Antwort von @VonC für eine bessere Lösung.

49
CagCak

Wenn Sie gerade git init verwendet haben und Ihre Dateien mit git add . oder einem ähnlichen Element hinzugefügt haben und Ihren Remote-Zweig hinzugefügt haben, kann es sein, dass Sie nichts lokales Push-to-Remote (git commit -m 'commit message') festgelegt haben. Ich hatte gerade diesen Fehler und Das war mein Problem.

28
ironcladmvtm

Ich hatte das gleiche Problem. Ich bekam dieses Problem, weil ich noch nicht einmal ein Commit gemacht hatte und trotzdem versuchte ich zu pushen.

Einmal habe ich git commit -m "your msg" gemacht und dann hat alles gut funktioniert.

16
ppmakeitcount

Ich finde die Lösung für dieses Problem in github help.

Sie können es an folgenden Stellen sehen: Umgang mit Fehlern beim schnellen Vorlauf

Es sagt:

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 branch
# 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 branch
# Grabs online updates and merges them with your local work
11
Sealter

Benennen Sie Ihren Zweig um und drücken Sie dann Push, z.

git branch -m new-name
git Push -u new-name

Das hat bei mir funktioniert.

6
p8ul

Wenn Sie die ersten Änderungen nicht vor dem Push übernehmen, wird das Problem ebenfalls verursacht

4
Claw

Wenn Sie gerrit verwenden, kann dies durch eine unangemessene Change-ID im Commit verursacht werden. Löschen Sie die Change-Id und sehen Sie, was passiert.

4
Jim Sime

1) git init

2) git remote add Origin https://gitlab.com/crew-chief-systems/bot

3) git remote -v (zur Überprüfung des aktuellen Repositorys)

4) git add -A (alle Dateien hinzufügen)

5) git commit -m "Mein Projekt hinzugefügt"

6) git pull - rebase Origin master

7) git Push Origin master

3
James Siva

vor dem Push müssen Sie die Änderungen hinzufügen und bestätigen oder git Push -f Origin master ausführen.

3
Kinnera Reddy

Vergessen Sie nicht, Ihre Änderungen festzuschreiben, bevor Sie zu Github Repo wechseln. Dies könnte Ihr Problem beheben.

3
Alf Moh

Ich hatte dasselbe Problem, das mit den folgenden Schritten behoben wurde.

  1. git init

  2. git hinzufügen.

  3. git commit -m 'Füge deine Commit-Nachricht hinzu'
  4. git fernes Hinzufügen von Origin https: //[email protected]/User_name/sample.git

    (Über url https: //[email protected]/User_name/sample.git verweist auf die URL Ihres Bit Bucket-Projekts.)

  5. git Push -u Origin master Hinweis: Überprüfen Sie, ob Ihr Git-Hub-Konto mit Ihrem lokalen Git verknüpft ist, indem Sie Folgendes verwenden: git config --global user.email "[email protected]"

    git config --global user.name "Your Name"

1
Divya

Für mich war das Problem, dass ich die Dateien nicht vor dem Commit hinzugefügt habe.

git add .

git commit -m "your msg"

1
Rohitsam

Sie müssen etwas Kraft geben

Mach einfach Push --force.

1
Ankit

Ich bin mir nicht sicher, ob dies zutrifft, aber das Problem bestand für mich darin, etwas nach git init lokal festzulegen. Dann habe ich mit --set-upstream auf die Fernbedienung geschoben ...

1
user1889992

git-Fehler: fehlgeschlagen. Einige Refs werden verschoben, wenn auch der lokale Repository-Name mit dem entsprechenden Remote-Repository-Namen übereinstimmt. Stellen Sie sicher, dass Sie an dem richtigen Repository-Paar arbeiten, bevor Sie die Änderungen in das Remote-Repository ziehen. Wenn Sie falsch buchstabieren und das lokale Repository entfernen möchten, gehen Sie wie folgt vor

Entfernen Sie das lokale Repo von Windows 1. del/F/S/Q/A .git 2. rmdir .git 3. Korrigieren Sie den lokalen Ordnernamen (XXXX02-> XXXX20), oder löschen Sie ihn, wenn es sich um ein neu erstelltes Repo handelt, und erstellen Sie das Repo erneut (XXXX02 Repo-Name geändert in XXXX20) . 4. git init 5. Remap mit Remote-Repo, wenn es nicht zugeordnet ist . 6. git remote add Origin https://github.com/ / XXXX20.git 7. git Push -u Origin master

0

Sie können das Problem auch beheben, indem Sie die git config-Datei Ihres Projekts bearbeiten:

Wo ist es?

.git/config

Fügen Sie am Ende die folgenden Zeilen hinzu, falls dies nicht der Fall ist.

[branch "master"] remote = Origin merge = refs/heads/master

Das hat mein Problem gelöst

0
Edd
git Push Origin {your_local_branch}:{your_remote_branch}

Wenn Ihre lokale Zweigstelle und die entfernte Zweigstelle denselben Namen haben, können Sie den Namen Ihrer lokalen Zweigstelle weglassen, indem Sie einfach git Push {your_remote_branch} verwenden. Andernfalls wird dieser Fehler ausgelöst.

0
Yitong Feng

Ich war mit einem ähnlichen Problem konfrontiert und habe die akzeptierte Antwort versucht. Das Ergebnis ist etwas anders. 

Während der Bearbeitung des lokalen Repositorys habe ich die readme.md-Datei auf der GitHub-Webseite geändert. Wenn ich also den Befehl git pull --rebase Origin master ausprobiere, erinnert mich die Befehlszeile daran

fehler: Kann nicht mit Rebase ziehen: Sie haben nicht imzenierte Änderungen.
Fehler: Bitte begehen oder verstauen. 

Ich muss also zuerst den Befehl git stash ausführen, um alle geänderten Dateien zu speichern, und dann der akzeptierten Antwort folgen. Danach wurden die lokal festgeschriebenen Dateien in das Github-Repository gepusht. Schließlich führe ich den git stash pop aus, um diese Dateien mit nicht bereitgestellten Änderungen wiederherzustellen.

Zusammenfassend ist für mich die Befehlsfolge

git stash
git pull --rebase Origin master
git Push Origin master
git stash pop

Da ich derzeit unter der akzeptierten Antwort nicht kommentieren kann, habe ich eine Antwort auf diese Frage hinzugefügt.

0
Gary Wang

In meinem Fall war es mein husky-Paket, das den Push nicht zulässt.

> husky - pre-Push hook failed (add --no-verify to bypass)
> husky - to debug, use 'npm run prepush'
error: failed to Push some refs to 'https://[email protected]/username/my-api.git'

Führen Sie einfach git Push Origin master --no-verify aus, um es mit Nachdruck zu übertragen.

Ich habe npm run prepush ausgeführt, um den Fehler zu debuggen. Dies war die Ursache:

npm ERR! code ELOCKVERIFY
npm ERR! Errors were found in your npm-shrinkwrap.json, run  npm install  to fix them.
npm ERR!     Invalid: lock file's [email protected] does not satisfy [email protected]^0.9.0

npm install ausführen und festschreiben, und das Problem ist behoben.

0
Jee Mok

In meinem Fall wurde durch Schließen des Editors (visueller Studiocode) ein Problem gelöst.

0
Vasyl Gutnyk

Dies passiert mir, weil ich ein Tag hatte, das mit dem Zweig identisch ist, und ich versuchte, den Zweig auf Remote zu verschieben.

0
Buminda

Wenn Sie versuchen, ein Verzeichnis mit einem vorhandenen GitHub-Repository zu initialisieren, sollten Sie sicherstellen, dass Sie Änderungen vornehmen.

Versuchen Sie, eine Datei zu erstellen:

touch initial
git add initial
git commit -m "initial commit"
git Push -u Origin master

Dadurch wird eine Datei mit dem Namen initial erstellt, die Sie später löschen können.

Hoffe diese Antwort hilft! Viel Glück!

0
Andreas Bigger

Dies kann passieren, wenn Sie keine Dateien haben. Versuchen Sie, eine Textdatei zu erstellen, und folgen Sie dann den folgenden Befehlen

git add .
git commit -m "first commit"
git Push --set-upstream Origin master
0
sushil suthar

Erstellen eines neuen Zweigs für mich gelöst:

git checkout -b <nameOfNewBranch>

Wie erwartet war keine Verschmelzung erforderlich, da die vorherige Niederlassung vollständig in der neuen Niederlassung enthalten war.

In meinem Fall trat dieser Fehler auf, weil in unserer Version von GitLab einige Wartungsarbeiten stattfanden.

0
GreenGiant

Für Sourcetree-Benutzer

Führen Sie zunächst einen Commit durch oder stellen Sie sicher, dass Sie keine nicht festgeschriebenen Änderungen vorgenommen haben. Dann befindet sich neben dem Quellenbaum ein "REMOTES", klicken Sie mit der rechten Maustaste darauf und klicken Sie dann auf "Push to Origin". Es geht los.

0
Bowie Chang

Nun, wenn keine der obigen Antworten funktioniert und Sie in letzter Zeit etwas mit ssh-add versaut haben. Versuchen

ssh-add -D
0
Abhisek