git - Ihr Zweig liegt um 1 Commit vor 'origin / master'


107

Ich bin ein Neuling in Git und ich arbeite an Git.

Ich habe einige Dateien in Git hinzugefügt:

git add <file1>
git add <file2>

dann wollte ich das zur Überprüfung drängen, aber ich tat es fälschlicherweise

git commit

Die Dateien, die ich geändert habe, werden daher nicht überprüft.
Wenn ich nun den Befehl eingebe:

git status

es sagt

# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
nothing to commit (working directory clean)

Ich möchte dieses Commit zurücksetzen und diese Dateien zur Überprüfung verschieben, anstatt sie festzuschreiben. Kann mir jemand mitteilen, wie ich das machen kann?


Wenn Sie Ihr Commit rückgängig machen möchten, werfen Sie einen Blick auf die ähnliche Frage .
16.

1
Ich weiß nicht, was Sie für Codeüberprüfungen verwenden. Die einfache Antwort auf die einfache Frage, wie man das Commit git reset HEAD^
aufhebt

Ich habe HEAD zurückgesetzt. aber dann, wenn ich versuche zu pushen, dann sagt es mir D file1.py, als ich versuchte zu psuh, dann sagt es mir wieder, dass Ihr Zweig um 1 Commit vor dem Ursprung / Master liegt
sam

Was meinst du, wenn du sagst "Ich möchte diese Dateien zur Überprüfung pushen"? Möchten Sie, dass andere Leute Ihr Engagement sehen?
Jake Greene

Mein Code wird zuerst überprüft und dann festgeschrieben. Also zuerst möchte ich den Code zur Überprüfung verschieben, aber fälschlicherweise habe ich mich verpflichtet
Sam

Antworten:


128

Sie können nichts pushen, was noch nicht festgeschrieben wurde. Die Reihenfolge der Operationen ist:

  1. Nehmen Sie Ihre Änderung vor.
  2. git add - Dies stellt Ihre Änderungen für das Festschreiben bereit
  3. git commit - Dadurch werden Ihre bereitgestellten Änderungen lokal festgeschrieben
  4. git push - Dadurch werden Ihre festgeschriebenen Änderungen auf eine Fernbedienung übertragen

Wenn Sie ohne Commit pushen, wird nichts gepusht. Wenn Sie ein Commit durchführen, ohne etwas hinzuzufügen, wird nichts festgeschrieben. Wenn Sie ohne Festschreiben hinzufügen, geschieht überhaupt nichts. Git merkt sich lediglich, dass die von Ihnen hinzugefügten Änderungen für das folgende Festschreiben berücksichtigt werden sollten.

Die Meldung, die Sie sehen (Ihr Zweig ist um 1 Commit voraus), bedeutet, dass Ihr lokales Repository über ein Commit verfügt, das noch nicht übertragen wurde.

Mit anderen Worten: addund commitsind lokale Operationen push, pullund fetchsind Operationen , die interact mit einer Fernbedienung.

Da es anscheinend einen offiziellen Workflow für die Quellcodeverwaltung gibt, in dem Sie arbeiten, sollten Sie intern fragen, wie damit umgegangen werden soll.


4
Aha ok. also bedeutet es, dass ich es nach dem Festschreiben pushen muss
sam

4
Gute Erklärung - Der Fragesteller möchte das Commit wahrscheinlich nicht zurücksetzen, sondern die Leute das Commit überprüfen lassen, bevor sie es in das originRepository verschieben. Ich würde auch empfehlen, ein paar der Tutorials / Intros zu lesen, um
dbr

1
Wenn mein Git-Status lautet "Ihre Filiale ist um 1 Commit vor" Ursprung / Entwicklung "." Wie genau sehe ich, dass Dateien geändert wurden? Git Diff scheint nichts zu tun
Tom

Manchmal hat jemand anderes dort gearbeitet. Machen Sie einen Zug vor Ihrem Stoß
Adrian P.

67

git reset HEAD^ --soft (Speichern Sie Ihre Änderungen, zurück zum letzten Commit)

git reset HEAD^ --hard (Änderungen verwerfen, zurück zum letzten Commit)


3
Welche Bedeutung hat der KOPF mit einer Karotte? Ich habe gesehen, dass es auch ohne Karotte geschrieben wurde.
Mugen

29

Wenn Sie nur die Änderungen wegwerfen und zum letzten Commit zurückkehren möchten (dem, das Sie teilen wollten):

git reset --hard HEAD~

Möglicherweise möchten Sie überprüfen, ob Sie dies möchten ( git log), da Sie alle Änderungen verlieren.

Eine sicherere Alternative ist das Laufen

git reset --soft HEAD~ # reset to the last commit
git stash              # stash all the changes in the working tree 
git push               # push changes 
git stash pop          # get your changes back 

21

Ich habe dies gelöst, indem ich einfach ein einfaches ausgeführt habe:

git pull

Nichts mehr. Jetzt zeigt es:

# On branch master
nothing to commit, working directory clean

Es kann zu Problemen führen, wenn mehr als ein Zweig erstellt wird, der nicht erforderlich ist.
Anil Kumar Arya

1
Sie sind in Ihren entfernten Zustand zurückgekehrt und haben Ihre letzte Arbeit verloren: D
Gucho Ca

13

git reset HEAD ^

dann sollten die geänderten Dateien angezeigt werden.

Sie können die geänderten Dateien in einen neuen Zweig verschieben

verwenden,

git checkout -b newbranch

git checkout commit -m "files modified"

git push origin newbranch

git checkout master

Dann sollten Sie sich in einem sauberen Zweig befinden und Ihre Änderungen sollten in newbranch gespeichert werden. Sie können diese Änderung später einfach in den Hauptzweig einfügen


4
git reset HEAD <file1> <file2> ...

Entfernen Sie die angegebenen Dateien aus dem nächsten Commit

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.