Als ich ein wenig mit meinem Quellcode gearbeitet habe, habe ich mein übliches Ding Commit gemacht und dann in ein entferntes Repository gepusht. Aber dann habe ich bemerkt, dass ich vergessen habe, meine Importe im Quellcode zu organisieren. Also habe ich den Befehl amend ausgeführt, um den vorherigen Commit zu ersetzen:
> git commit --amend
Leider kann der Commit nicht in das Repository zurückgeschoben werden. Sie wird auf diese Weise abgelehnt:
> git push origin
To //my.remote.repo.com/stuff.git/
! [rejected] master -> master (non-fast forward)
error: failed to push some refs to '//my.remote.repo.com/stuff.git/'
Was sollte ich tun? (Ich kann auf das entfernte Repository zugreifen.)
2 Stimmen
Was wäre, wenn ich mit --amend nur die Commit-Nachricht ändern würde? Gibt es eine Möglichkeit, die letzte Commit-Nachricht allein zu bearbeiten, wenn sie bereits an die Gegenstelle übertragen wurde? Ich habe das auf Github gemacht und erhielt die gleiche Meldung über die nicht schnelle Weiterleitung. Dann habe ich die folgende Lösung angewandt, aber der Merge hat nur weitere Commit-Nachrichten hinzugefügt.
9 Stimmen
@faB: Ich denke, das ist eine FAQ. Eine Commit-Nachricht wird zusammen mit dem Commit gehasht, so dass das Ändern es ändert den Revid (Hash). Falls es nicht klar ist: Nein, das geht nicht. IIRC kann Out-of-Band-Informationen in Notizen speichern (so dass Sie bestehende Commits mit Anmerkungen versehen können, ohne sie zu verändern). Um bestimmte Commits zu kennzeichnen, verwenden Sie Tags
1 Stimmen
In Kürze (git1.8.5, Q4 2013) werden Sie in der Lage sein eine
git push -force
sorgfältiger .3 Stimmen
Hier ist der Cowboy-Stil. Lernen Sie nicht weiter und suchen Sie nicht nach Möglichkeiten, die vorherige Git-Änderung rückgängig zu machen. Fügen Sie einfach ein paar Platzhalter hinzu, ich meine, fügen Sie einen Kommentar hinzu, bereinigen Sie ein bisschen Code oder fügen Sie einfach ein paar Bindestriche hinzu.... Jetzt machen Sie einen echten Commit und pushen Sie ihn an Remote. Geschafft!
0 Stimmen
@user58777 Wenn Ihr -amend nur dazu diente, die Commit-Nachricht zu ändern und Sie seitdem keine weiteren lokalen Commits gemacht haben, können Sie Ihren lokalen Zweig auf den entfernten Commit zurücksetzen, den Sie vor dem Ändern der Commit-Nachricht gepusht haben.
1 Stimmen
Wenn niemand sonst die
remote
und Sie möchten einfach zwingenpush
die geänderte Übertragung, die die vorherige ersetzt, können Siedelete
die Fernbedienung und schieben Sie die geänderte Übergabe direkt danach, um die Fernbedienung neu zu erstellen.