Ich habe einen Remote-Gitosis-Server und ein lokales Git-Repository. Jedes Mal, wenn ich eine große Änderung an meinem Code vornehme, werde ich die Änderungen auch auf diesen Server übertragen.
Aber heute stelle ich fest, dass, obwohl ich einige lokale Änderungen habe und mich für das lokale Repository festschreibe, beim Ausführen git push origin master
"Alles auf dem neuesten Stand" steht, aber wenn ich git clone
Dateien auf dem Remote-Server auschecke, enthält es keine neuesten Änderungen . Und ich habe nur einen Zweig namens "master" und einen Remote-Server namens "origin".
PS: Dies ist, was Git beim Laufen anzeigt ls-remote
. Ich bin mir nicht sicher, ob es hilft
$ git ls-remote origin
df80d0c64b8e2c160d3d9b106b30aee9540b6ece HEAD
df80d0c64b8e2c160d3d9b106b30aee9540b6ece refs/heads/master
$ git ls-remote .
49c2cb46b9e798247898afdb079e76e40c9f77ea HEAD
df80d0c64b8e2c160d3d9b106b30aee9540b6ece refs/heads/master
df80d0c64b8e2c160d3d9b106b30aee9540b6ece refs/remotes/origin/master
3a04c3ea9b81252b0626b760f0a7766b81652c0c refs/tags/stage3
commit
die ich nicht bemerkte und versuchte, Code zu pushenAntworten:
Arbeiten Sie zufällig mit einem abgetrennten Kopf ?
Wie in:
Dies zeigt an, dass Ihr letztes Commit kein Zweigstellenleiter ist.
Warnung : Folgendes führt Folgendes aus
git reset --hard
: Stellen Sie sicher, dass Siegit stash
zuerst verwenden, wenn Sie Ihre aktuell geänderten Dateien speichern möchten.Wie in der
git checkout
Manpage erwähnt (Hervorhebung von mir):quelle
Step 1: git fetch origin git checkout -b "nodeAPI" "origin/nodeAPI" Step 2. Review the changes locally Step 3. Merge and fix conflicts git fetch origin git checkout "origin/master" git merge --no-ff "nodeAPI" Step 4. Push the result of the merge to GitLab git push origin "master"
Ich bin bis zum letzten Schritt gut. Aber jetzt bin ich nur verwirrt, wie ich vorankommen soll.git branch -f myBranch HEAD
und drücken Sie ihn. In Ihrem FallmyBranch
könnte dies der Fall sein,master
wenn Sie gerade zusammengeführt werdennodeAPI
.Err .. Wenn Sie ein git Noob sind , sind Sie sicher , dass Sie
git commit
vorgit push
? Ich habe diesen Fehler das erste Mal gemacht!quelle
git commit -a -m "your message goes here"
in meinem Fallgit add -A
,git diff --staged
, blättert durch Änderungen hmm sieht sehr gut aus ,git commit -m 'bam!'
,git push
Vielleicht drängen Sie eine neue lokale Niederlassung?
Ein neuer lokaler Zweig muss explizit verschoben werden:
Nur eines dieser Dinge über Git ... Sie klonen ein Repo, machen einen Zweig, übernehmen einige Änderungen, drücken ... "Alles ist auf dem neuesten Stand". Ich verstehe, warum es passiert, aber dieser Workflow ist für Neulinge äußerst unfreundlich.
quelle
Mein Problem war, dass meine lokale Niederlassung einen anderen Namen hatte als die entfernte Niederlassung. Ich konnte pushen, indem ich Folgendes tat:
$ git push origin local-branch-name:remote-branch-name
(Gutschrift an https://penandpants.com/2013/02/07/git-pushing-to-a-remote-branch-with-a-different-name/ )
quelle
Eine andere Situation, die Sie unbedingt beachten sollten: Der Standardstatus für git ist, dass Sie im Zweig "master" arbeiten. Und für viele Situationen werden Sie sich einfach als Hauptarbeitszweig darin aufhalten (obwohl manche Leute Lust haben und andere Dinge tun).
Jedenfalls ist das nur ein Zweig. Eine Situation, in die ich geraten könnte, ist:
Mein aktiver Zweig ist eigentlich NICHT der Hauptzweig. ... Aber ich mache gewöhnlich den Befehl:
git push
(und ich hatte es zuvor getangit push origin master
, also ist es eine Abkürzung für DAS).Also schiebe ich den Hauptzweig gewöhnlich auf das gemeinsame Repo ... was in meinem Fall wahrscheinlich eine gute, saubere Sache ist ...
Aber ich habe vergessen, dass die Änderungen, an denen ich gearbeitet habe, noch nicht in der Hauptniederlassung sind !!!
Deshalb möchte ich jedes Mal
git push
, wenn ich es versuche und "Alles auf dem neuesten Stand" sehe, schreien, aber natürlich ist es nicht die Schuld von git! Es gehört mir.Also füge ich stattdessen meinen Zweig zum Master zusammen und drücke dann, und alles ist wieder glücklich.
quelle
git push
.Erläuterung
Ich hatte den gleichen Fehler und verbrachte Stunden damit, es herauszufinden. Endlich habe ich es gefunden. Was ich nicht wusste ist, dass ich so drücke
git push origin branch-x
versucht wird, lokal nach branch-x zu suchen und dann auf remote branch-x zu pushen.In meinem Fall hatte ich zwei Remote-URLs. Ich habe einen Checkout von Branch-X zu Branch-Y durchgeführt, als ich versucht habe, von y lokal auf x remote zu pushen. Ich hatte die Meldung, dass alles auf dem neuesten Stand ist, was normal ist, weil ich auf x der zweiten Remote pushe.
Lange Rede, kurzer Sinn, um nicht in diese Art von Falle zu geraten, müssen Sie die Quellreferenz und die Zielreferenz angeben:
Aktualisieren:
Wenn Sie diesen Befehl jedes Mal ausführen müssen, wenn Sie Ihren Zweig pushen, müssen Sie möglicherweise den Upstream zwischen Ihrem lokalen und Remote-Zweig wie folgt einstellen:
Oder
quelle
Siehe VonCs Antwort oben - ich brauchte einen zusätzlichen Schritt:
Ich habe dies getan, aber als ich es dann versuchte,
git push remoterepo master
stand dort "Fehler: Einige Refs konnten nicht gepusht werden. Um zu verhindern, dass Sie den Verlauf verlieren, wurden Aktualisierungen ohne schnellen Vorlauf abgelehnt. Führen Sie die Remote-Änderungen (z. B." Git Pull ") zuvor zusammen wieder drücken. "Also habe ich 'git pull remoterepo master' gemacht und es wurde ein Konflikt gefunden. Ich habe es
git reset --hard <commit-id>
erneut getan , die in Konflikt stehenden Dateien in einen Sicherungsordnergit pull remoterepo master
kopiert , es erneut getan , die in Konflikt stehenden Dateien wieder in mein Projekt kopiert, esgit commit
dann getangit push remoterepo master
, und diesmal hat es funktioniert.Git hörte auf zu sagen, "alles ist auf dem neuesten Stand" - und beschwerte sich nicht mehr über "Schnellvorlauf".
quelle
Ich habe eine ähnliche Situation erlebt; Als ich die Änderungen vornahm und es versuchte
git push origin master
, hieß es, alles sei auf dem neuesten Stand.Ich musste
git add
die geänderte Datei und danngit push origin master
. Von da an fing es an zu arbeiten.quelle
git commit
diese hinzugefügte Datei nicht vor dem Push verwenden?Von Ihrem Git-Status haben Sie wahrscheinlich eine andere Situation als ich.
Aber trotzdem, hier ist was mit mir passiert ist. Ich bin auf den folgenden Fehler gestoßen:
Die informativere Nachricht hier ist, dass die Fernbedienung aufgelegt hat. Es stellte sich heraus, dass dies auf die Überschreitung der http-Post-Puffergröße zurückzuführen ist. Die Lösung besteht darin, es mit zu erhöhen
git config http.postBuffer 524288000
quelle
Ich hatte dieses Problem heute und es hatte nichts mit den anderen Antworten zu tun. Folgendes habe ich getan und wie ich es behoben habe:
Ein Repository von mir ist kürzlich umgezogen, aber ich hatte eine lokale Kopie. Ich habe mich von meinem lokalen "Master" -Zweig getrennt und einige Änderungen vorgenommen - und dann habe ich mich daran erinnert, dass das Repository verschoben wurde. Früher habe ich
git remote set-url origin https://<my_new_repository_url>
die neue URL festgelegt, aber wenn ich sie gedrückt habe, wurde nur "Alles auf dem neuesten Stand" angezeigt, anstatt meinen neuen Zweig an den Master zu senden.Am Ende löste ich es, indem ich auf
origin/master
explizite Zweignamen umbasierte und dann darauf drückte:Ich hoffe das hilft jedem, der das gleiche Problem hatte!
quelle
Super selten - aber dennoch: Unter Windows kann es sein, dass gepackte Refs einen Zweig mit einem Buchstaben (dh dev / mybranch) haben, während refs Ordner einen anderen Fall (dh Dev / mybranch) hat, wenn core.ignorecase auf true gesetzt ist .
Die Lösung besteht darin, die relevante Zeile manuell aus gepackten Referenzen zu löschen . Ich habe keine sauberere Lösung gefunden.
quelle
Ich bin selbst darauf gestoßen, als ich eine Niederlassung auf Github zusammengelegt und mich dort lokal weiterentwickelt habe. Mein Fix war etwas anders als die anderen, die vorgeschlagen wurden.
Zuerst habe ich eine neue lokale Niederlassung von meiner alten lokalen Niederlassung abgezweigt (die ich nicht pushen konnte). Dann habe ich den neuen lokalen Zweig auf den Ursprungsserver (Github) verschoben. Dh
Dies führte dazu, dass die Änderungen auf Github angezeigt wurden, allerdings eher in newlocalbranch als in oldlocalbranch.
quelle
In meinem Fall hatte ich 2 Remote-Repos.
Beide Repo waren gleich. Nur einer war der
https
anderessh
. Das Entfernen des unerwünschten (in meinem Fall,ssh
da ich es verwendet habe,https
weilssh
es nicht funktioniert hat!) Behebt das Problem für mich.quelle
Mein Fehler war anders als alles, was bisher erwähnt wurde. Wenn Sie keine Ahnung haben, warum Sie einen abgetrennten Kopf haben würden, dann tun Sie dies wahrscheinlich nicht. Ich habe mit
git commit
und am Autopiloten gearbeitet undgit push
die Ausgabe von nicht gelesengit commit
. Es stellte sich heraus, dass es eine Fehlermeldung war, weil ich -am vergessen habe.Es wurde behoben, indem ich
-am
dort platzierte , wo ich normalerweise bin:quelle
Ich habe das gleiche Problem konfrontiert. Da ich dem Staging-Bereich keine Änderungen hinzugefügt habe. Und ich habe direkt versucht, den Code mit dem folgenden Befehl auf Remote Repo zu übertragen:
git push origin master
Und es zeigt die Nachricht
Everything up-to-date
.Führen Sie die folgenden Schritte aus, um dieses Problem zu beheben
git add .
git commit -m "Bug Fixed"
git push -u origin master
quelle
Stellen Sie sicher, dass Sie Ihre Remote-URL nicht vermasselt haben.
Ich wollte nur erwähnen, dass ich darauf gestoßen bin, nachdem ich Git als CVS in einer lokalen Jenkins-Build-Konfiguration aktiviert hatte. Es scheint, dass Jenkins das letzte Commit des Zweigs, den ich ihm gegeben habe, überprüft und auch meine Fernbedienung zurückgesetzt hat, um den Pfaden zu entsprechen, die ich dem Repo gegeben habe. Musste meinen Feature-Zweig erneut auschecken und meine ursprüngliche Remote-URL mit 'git remote set-url' korrigieren. Zeigen Sie nicht mit einem Build-Tool auf Ihr Arbeitsverzeichnis, sonst haben Sie eine schlechte Zeit. Meine Fernbedienung war auf einen Dateipfad zu meinem Arbeitsverzeichnis eingestellt, sodass natürlich alles auf dem neuesten Stand war, als ich versuchte, Änderungen mit derselben Quelle und demselben Ziel zu übertragen.
quelle
Eine andere Möglichkeit besteht darin, dass Sie ein Verzeichnis in Ihrer Gitignore-Datei benannt haben, das ausgeschlossen wurde. Die neuen Commits würden also nicht vorangetrieben. Es ist mir passiert, dass ich ein Verzeichnis benannt habe, um "Suche" zu ignorieren, aber das war auch ein Verzeichnis in meinem Quellbaum.
quelle
Ich habe einen schnellen Weg gefunden. Gehen Sie zu Ihrem .git-Ordner, öffnen Sie die
HEAD
Datei und ändern Sie den Zweig, in dem Sie sich befanden, wieder in master. ZB ref:refs/heads/master
quelle
refs/heads/master
mein Repository kaputt geht. Die Einstellung auf das, was ich für das HEAD-Commit hielt, ergab jedoch die folgende Meldung :Warning: you are leaving 1 commit behind, not connected to any of your branches
. Ich konnte das Commit in einen neuen Zweig übernehmen und es wieder mit dem Master zusammenführen.Ich hatte das gleiche Problem. In meinem Fall wurde dies dadurch verursacht, dass Namen für dieselbe Fernbedienung erforderlich waren. Es wurde der Standard-Ursprung erstellt, aber ich habe lange Zeit "Github" als Fernbedienung verwendet, also war das auch da. Sobald ich die 'Origin'-Fernbedienung entfernt hatte, verschwand der Fehler.
quelle
Ich hatte dies geschehen (Commits in meinem Git-Protokoll waren nicht auf GitHub, obwohl Git sagte, dass alles auf dem neuesten Stand war) und ich bin zuversichtlich, dass das Problem Github war. Ich habe in git keine Fehlermeldungen erhalten, aber GitHub hatte Statusfehler und meine Commits waren einige Stunden später da.
https://status.github.com/messages
Die GitHub-Statusmeldungen lauteten:
quelle
Ein weiterer sehr einfacher, aber noobischer Fehler von mir: Ich habe einfach vergessen, einen Nachrichtenmodifikator
-m
in mein Commit aufzunehmen. Also schrieb ich:Anstelle von richtig:
HINWEIS: Es werden KEINE Fehler ausgegeben! Aber Sie werden nicht in der Lage sein, Ihre Commits zu pushen und immer
Everything up to date
stattdessen zu bekommenquelle
hier unterscheidet sich meine Lösung von der oben genannten. Ich habe nicht herausgefunden, wie dieses Problem passiert, aber ich habe es behoben. ein wenig unerwartet.
jetzt kommt weg:
Der Befehl, der für mich funktioniert, ist
$git push origin HEAD:use_local_cache
(Hoffe ihr kommt so schnell wie möglich aus diesen Schwierigkeiten heraus)
quelle
Ich weiß, dass es super alt ist, aber in meinem Fall habe ich es ziemlich schnell behoben.
Ich habe den gleichen Fehler erhalten, als ich ein Commit voraus war
master
. Dann habe ich den aktuellen Stack Overflow-Beitrag gefunden. Bevor ich jedoch mit den vorgeschlagenen Ideen fortfuhr, entschied ich mich, ein neues Commit zu machen und es erneut mit dem Push-to-Origin zu versuchen, und es funktionierte reibungslos.Ich weiß nicht warum, aber vielleicht ist es für jemand anderen nützlich.
quelle
Eine andere Möglichkeit besteht darin, dass Sie Commits haben, die sich nicht auf das Verzeichnis auswirken, das Sie verschieben. In meinem Fall hatte ich also eine Struktur wie
Und ich habe mich verpflichtet, das Modifizieren zu meistern
README.md
, bin dann gelaufengit subtree push --prefix client heroku-client master
und habe die Nachricht erhaltenEverything up-to-date
quelle
Ich habe mit Jupyter-Notebook gearbeitet, als ich auf diesen irreführenden Fehler gestoßen bin.
Ich konnte durch die oben angegebenen Lösungen keine Lösung finden, da ich weder einen abgetrennten Kopf hatte noch unterschiedliche Namen für mein lokales und Remote- Repo hatte.
Aber was ich tat , war habe meine Dateigrößen waren etwas größer als 1 MB und der größte war fast ~ 2MB . Ich habe die Dateigröße mit reduziert Wie kann ich die Dateigröße meines iPython-Notebooks reduzieren?Technik. Es hat mir geholfen, meine Dateigröße zu reduzieren, indem ich die Ausgaben gelöscht habe. Ich konnte den Code fortan pushen, da er meine Dateigröße in KBs brachte.
quelle