Szenario:
- Ich mache einen neuen Zweig
- Hack drauf
- begehen Sie es
- Drück es
- hacke es noch ein bisschen weiter
- erneut festschreiben
- versuchen Sie es erneut
Git antwortet:
Aktualisierungen wurden abgelehnt, da sich die Spitze Ihres aktuellen Zweigs hinter dem Remote-Gegenstück befindet. etc.
Ich bin der einzige, der diesen Zweig hackt - niemand anderes berührt ihn. Der Remote-Zweig befindet sich tatsächlich hinter dem lokalen Zweig. Ich sollte überhaupt nicht ziehen müssen.
(Und wenn ich ziehe, meldet Git Konflikte zwischen den beiden und zwingt mich, den Zweig in sich zusammenzuführen.)
Warum passiert das (wahrscheinlich)? Und wie kann ich es diagnostizieren / beheben?
Um es klar auszudrücken, ich verzweige nirgendwo und niemand anderes arbeitet daran:
Remote: Commit A -------- Commit B
Local: Commit A -------- Commit B -------- Commit C
C ist eine gerade Fortsetzung von B, ohne Verzweigung. Aber Git denkt, C ist ein Zweig von A:
Remote: Commit A -------- Commit B
------- Commit C
/
Local: Commit A -------- Commit B
Es ist nicht; es ist eine gerade Fortsetzung von B.
git remote -v
undgit show remote origin
(vorausgesetzt, der Ursprung ist die Fernbedienung, mit der Sie Probleme haben) kann hilfreich seinAntworten:
Sie haben wahrscheinlich die Geschichte neu geschrieben? Ihre lokale Niederlassung weicht von der auf dem Server ab. Führen Sie diesen Befehl aus, um besser zu verstehen, was passiert ist:
Ich würde Ihnen dringend empfehlen, zu verstehen, woher dieser Fehler kommt. Um das Problem zu beheben, führen Sie einfach Folgendes aus:
Das
-f
macht es zu einem „Zwang Push“ und überschreibt den Zweig auf dem Server. Das ist sehr gefährlich, wenn Sie im Team arbeiten. Aber da Sie alleine sind und sicher sind, dass Ihr lokaler Staat korrekt ist, sollte dies in Ordnung sein. Sie riskieren, den Commit-Verlauf zu verlieren, wenn dies nicht der Fall ist.quelle
HEAD
als auch das@{u}
beziehen sich auf Commits. Sie teilen gitk mit, welche Zweige angezeigt werden sollen.HEAD
bezieht sich auf den aktuell ausgecheckten Zweig,@{u}
ist die Abkürzung fürHEAD@{u}
, die den Upstream-Zweig des aktuell ausgecheckten Zweigs darstellt. Also zum Beispiel.master
, das ist normalerweiseorigin/master
.gitk
geholfen!Die Lösung ist sehr einfach und hat bei mir funktioniert.
Versuche dies :
dann
quelle
Dies passierte mir, als ich versuchte, den Entwicklungszweig zu verschieben (ich verwende Git Flow). Jemand hatte Push-Updates zu meistern. um es zu beheben, habe ich:
Welches diese Änderungen holte. Dann,
Welches hat nichts getan. Ich denke, der Entwicklungszweig hat trotz der Fehlermeldung bereits gepusht. Alles ist jetzt auf dem neuesten Stand und keine Fehler.
quelle
Folgen Sie dieser Antwort , um die Diagnose zu stellen .
Aber um das Problem zu beheben, wissen Sie, dass Sie der einzige sind, der es ändert:
1 - Sichern Sie Ihr Projekt (ich habe nur die Dateien in git, ./src Ordner erstellt)
2 -
git pull
3 - Stellen Sie Ihre Sicherung über die vielen "durcheinandergebrachten" Dateien wieder her ( mit Zusammenführungsindikatoren)
Ich habe es versucht,
git pull -s recursive -X ours
aber es hat nicht so funktioniert, wie ich es wollte. Es könnte eine Option sein, aber zuerst sichern !!!Stellen Sie sicher, dass die Unterschiede / Änderungen (bei git gui) keine sind. Dies ist mein Fall, es gibt überhaupt nichts zu verschmelzen, aber Github sagt immer wieder, ich sollte zusammenführen ...
quelle