Hier sind die Schritte zum Bearbeiten der Festschreibungsnachricht eines vorherigen Festschreibens ( das nicht das letzte Festschreiben ist ) mit SourceTree für Windows Version 1.5.2.0 :
Schritt 1
Wählen Sie das Commit unmittelbar vor dem Commit aus, das Sie bearbeiten möchten. Zum Beispiel, wenn ich das Commit mit der Meldung "FOOBAR!" dann muss ich das Commit auswählen, das direkt davor kommt:
Schritt 2
Klicken Sie mit der rechten Maustaste auf das ausgewählte Commit und klicken Sie auf Rebase children...interactively
:
Schritt 3
Wählen Sie das Commit aus, das Sie bearbeiten möchten, und klicken Sie dann Edit Message
unten. In diesem Fall wähle ich das Commit mit der Meldung "FOOBAR!" Aus:
Schritt 4
Bearbeiten Sie die Festschreibungsnachricht und klicken Sie dann auf OK
. In meinem Beispiel habe ich "SHAZBOT! SKADOOSH!"
Schritt 5
Wenn Sie zum interaktiven Rebase-Fenster zurückkehren, klicken Sie auf OK
, um die Rebase zu beenden:
Schritt 6
Zu diesem Zeitpunkt müssen Sie Ihre neuen Änderungen erzwingen, da Sie bereits übertragene Commits neu basiert haben. In der aktuellen Version 1.5.2.0 von SourceTree für Windows können Sie die GUI jedoch nicht erzwingen. Daher müssen Sie Git sowieso über die Befehlszeile verwenden, um dies zu tun.
Klicken Sie Terminal
in der GUI auf, um ein Terminal zu öffnen.
Schritt 7
Drücken Sie vom Terminal aus mit dem folgenden Befehl:
git push origin <branch> -f
Wo <branch>
ist der Name des Zweigs, den Sie pushen möchten, und -f
bedeutet, den Push zu erzwingen. Der Force Push überschreibt Ihre Commits auf Ihrem Remote-Repo, aber das ist in Ihrem Fall in Ordnung, da Sie gesagt haben, dass Sie Ihr Repo nicht mit anderen Personen teilen.
Das ist es! Du bist fertig!
In Version 1.9.6.1. Für UnPushed Commit.
quelle
Wenn die Kommentarmeldung nicht englische Zeichen enthält, werden diese Zeichen mithilfe der von user456814 bereitgestellten Methode durch Fragezeichen ersetzt. (getestet unter Sourcetree Ver2.5.5.0)
Also muss ich die folgende Methode anwenden.
VORSICHT : Wenn das Commit von anderen Mitgliedern gezogen wurde, können die folgenden Änderungen Chaos für sie verursachen.
Schritt 1 : Suchen Sie im Sourcetree-Hauptfenster Ihre Repo-Registerkarte und klicken Sie auf die Schaltfläche " Terminal ", um die Git-Befehlskonsole zu öffnen.
Schritt 2 :
[Situation A] : Das Ziel-Commit ist das neueste.
1) Geben Sie in der git-Befehlskonsole ein
2) Wenn das Ziel-Commit auf Remote übertragen wurde, müssen Sie erneut mit Gewalt drücken. Geben Sie in der git-Befehlskonsole ein
[Situation B] : Das Ziel-Commit ist nicht das neueste.
1) Geben Sie in der git-Befehlskonsole ein
Es ist die neuesten n Commits zu quetschen. Wenn Sie beispielsweise die Nachricht vor der letzten bearbeiten möchten, ist n 2. Dieser Befehl öffnet ein vi-Fenster, das erste Wort jeder Zeile lautet " pick " und Sie ändern "pick" in " reword " für die Zeile Sie möchten bearbeiten. Geben Sie dann ein,
:wq
um das vi-Fenster zu speichern und zu beenden. Jetzt wird ein neues vi-Fenster geöffnet, in das Sie Ihre neue Nachricht eingeben. Auch:wq
zum Speichern und Beenden verwenden.2) Wenn das Ziel-Commit auf Remote übertragen wurde, müssen Sie erneut mit Gewalt drücken. Geben Sie in der git-Befehlskonsole ein
Schließlich : Drücken Sie im Hauptfenster des Quellenbaums
F5
zum Aktualisieren auf.quelle
Aktualisieren
Hinweis: Diese Antwort wurde ursprünglich in Bezug auf ältere Versionen von SourceTree für Windows geschrieben und ist jetzt veraltet.
Siehe meine neue Antwort für die aktuelle Version von SourceTree für Windows, 1.5.2.0 . Ich lasse diese Antwort aus historischen Gründen zurück.
Ursprüngliche Antwort
Nein, Git-GUIs decken nicht alle Funktionen von Git ab . Sie kommen nicht einmal nahe . Ich schlage vor, Sie lesen eine der Antworten in Wie bearbeite ich eine falsche Commit-Nachricht in Git? Git ist flexibel genug, dass es mehrere Lösungen gibt ... über die Befehlszeile.
SourceTree wird möglicherweise bereits mit der msysgit-Bash-Shell geliefert, oder es kann möglicherweise die Standard-Windows-Befehlsshell verwenden. In beiden Fällen öffnen Sie es in SourceTree, indem Sie auf die Schaltfläche Terminal klicken:
Hier legen Sie fest, welches Terminal SourceTree verwendet (Bash oder Windows):
Eine Möglichkeit, das Problem in SourceTree zu lösen
Abgesehen davon, hier ist eine Möglichkeit, wie Sie dies in SourceTree tun können. Da Sie in den Kommentaren erwähnt haben, dass es Ihnen nichts ausmacht, "zum fehlerhaften Commit zurückzukehren" (womit Sie vermutlich das Zurücksetzen meinen, was in Git eine andere Operation ist), sind hier die Schritte:
Reset current branch to this commit
und die Hard-Reset-Option aus der Dropdown- Liste auswählen und auswählen.Zu diesem Kommentar :
Bedeutet das, dass Sie die einzige Person sind, die am Repo arbeitet? Dies ist wichtig, da es nicht trivial ist, den Verlauf eines Repos zu ändern (z. B. durch Ändern eines Commits), ohne Ihren Mitarbeitern Probleme zu bereiten. Angenommen, Sie sind die einzige Person, die am Repo arbeitet, dann möchten Sie als Nächstes Ihren geänderten Verlauf zwangsweise auf die Fernbedienung übertragen.
Beachten Sie jedoch, dass Sie durch erzwungenes Drücken alle Arbeiten ausführen, die zuvor ausgeführt wurden, da Sie das fehlerhafte Festschreiben hart zurückgesetzt haben. Wenn das in Ordnung ist, müssen Sie möglicherweise den folgenden Befehl in der Befehlszeile verwenden, um den Force-Push auszuführen, da ich in SourceTree keine Option dafür gefunden habe:
Dies setzt auch voraus, dass Sie mit BitBucket Push auf ein Repo erzwingen können.
Sie sollten jedoch trotzdem über die Befehlszeile lernen, wie man Git verwendet. Dadurch werden Sie mit Git besser vertraut. #ProTip, verwenden Sie msysgit und aktivieren Sie den Schnellbearbeitungsmodus in den Terminaleigenschaften, sodass Sie doppelklicken können, um eine Textzeile hervorzuheben, mit der rechten Maustaste zum Kopieren klicken und zum Einfügen erneut mit der rechten Maustaste klicken. Es ist ziemlich schnell.
quelle