2016-06-11 8 views
1

Ich habe mehrere "save point" Commits und möchte sie zerquetschen, um eine lesbarere Zeitleiste zu haben. Hier ist meine Situation:Wie man git squash commits mit gegebenen Commit-Nachrichten macht

> git log 

29a94be3d2d4f Added some feature 
9bf0f2730234e savepoint   << Pushed here 
240e1ce8893e9 Add ignore rule 
01462e889d416 savepoint 
6238e3b775027 Fixed Something << Pushed here 
0d485486a42a9 Update Version 
...... 
06ad9e4fc5f64 savepoint 
1462e57657434 Initial Commit 

Und ich würde

29a94be3d2d4f Added some feature 
240e1ce8893e9 Add ignore rule 
6238e3b775027 Fixed Something 
0d485486a42a9 Update Version 
1462e57657434 Initial Commit 

Gibt es eine Möglichkeit, um dieses Skript haben mögen, so kann ich sagen:

git squash -commits-with-log="savepoint" ~FROM_INITIAL_COMMIT

+2

Was bedeutet dein '<< Pushe d hier 'Notation anzeigen? Wenn Sie diese auf einen Remote-Server verschoben oder auf andere Weise veröffentlicht haben, müssen alle Änderungen, die Sie an oder vor diesen Punkten vornehmen, dazu führen, dass auch jemand, der diese veröffentlichten Commits * verwendet *, * Maßnahmen ergreift. Wenn das in Ordnung ist, können Sie Rebase-to-Squash; Wenn nicht, können Sie nicht. – torek

+0

Das erinnert mich an http://stackoverflow.com/a/2302947/6309, aber es trifft nicht genau in Ihrem Fall zu. – VonC

Antwort

0

Update: Es scheint, dass der Trick ist in GIT_SEQUENCE_EDITOR Variable

+0

Um dies zu erweitern, ist [hier] (https://stackoverflow.com/a/46403701/5037965) eine lange Antwort, die 'GIT_SEQUENCE_EDITOR' verwendet, um die Verwendung von' git rebase -i' zu automatisieren, um ähnliche Commits zu quetschen. –