2017-11-27 7 views
-1

Ich möchte eine Nachricht eines Commits ändern, das nicht übertragen wurde. Daher verwende ich den BefehlGit - Der Versuch, eine vorherige Commit-Nachricht zu ändern, führt zu einem falschen Commit.

git rebase -i "commitId". 

Allerdings, wenn ich diesen Befehl ausführen, führt es nicht zu der Commit-Nachricht, die ich bearbeiten möchte. Vielleicht zeigt es die Nachrichten meiner anderen Commits. Ist etwas falsch gelaufen, so dass das Match zum richtigen Commit nicht mehr funktioniert? Beispiel:

begehen cad487486b6465dff38b25392673ba23024fe615 (HEAD -> Master) Autor: Kaan Cayoglu Datum: Mo 27. November 13:04:44 2017 +0100

LPM-406 - Send encryption certificates to stand-in 

788ae89a51779a07be3b3266a22cef750298bcea Autor begehen: Kaan Cayoglu Datum: Mon Nov 27 13:03:34 2017 +0100

LPM-405 - Renewal of softtoken 

begehen 8bca40e4c9b933e7bcc9b430d72d97fb309eeba5 Autor: Kaan Cayoglu Datum: Mo 27. November 12:56:47 2017 +0100

LPM-396 Replace softtoken process 

Also lassen Sie uns sagen, dass ich die Nachricht von 8bca40e4c9b933e7bcc9b430d72d97fb309eeba5 bearbeiten möchten. Ich benutze den Befehl git rebase -i "8bca40e4c9b933e7bcc9b430d72d97fb309eeba5". Der vi-Editor öffnet sich, aber dort sehe ich die Nachricht der beiden anderen Commits, aber nicht die, die ich sehen möchte. Irgendwelche Ideen..?

Antwort

1

Der Befehl Ihre Verwendung ist interaktiv Rebasieren git rebase -i diese verwendet werden können, um die Nachricht zu ändern, aber wenn Sie nur die Nachricht der letzten ändern möchten verpflichten es einfacher ist, zu tun:

git commit --amend -m "New message" 

Beachten Sie, dass diese Ändert das Commit-Datum und die Nachricht und damit den SHA-256-Schlüssel des Commits, daher ist es eine schlechte Idee, dies bei veröffentlichten Commits zu tun.

+0

Ich sehe .. Aber ich wollte meine letzte Verpflichtung sowieso nicht ändern –

3

Das Argument zu rebase ist das neue Basis-Commit, also wollen Sie commitId^ als Argument. ^ bezeichnet das übergeordnete Element des angegebenen Commits.

+0

Legende ... Danke für die Hilfe! –

+0

Nicht genau richtig, though. Das Argument ist das "Upstream", das definiert, wo die Rebase aufhört, nach den zu verarbeitenden Commits zu suchen (und welche standardmäßig * als die neue Basis dienen, auf die die Commits umgeschrieben werden, aber siehe "--onto"). Der Rat ist also in Ordnung mit den Vorbehalten, dass es ein Durcheinander sein kann, wenn dies irgendwelche Zusammenführungen durchläuft, und dass manchmal 'commitId^'nicht gültig ist, weil' commitId' kein Elternteil hat (in diesem Fall ersetzen Sie 'commitId ^' durch ' --wurzel'). –

Verwandte Themen