2016-06-11 65 views
1

我有几个“保存点”提交,并希望压扁他们有一个更可读的时间表。这里是我的情况:如何做git南瓜承诺给定的提交消息

> 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 

我想有

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

是有办法的脚本这一点,所以我可以说:

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

+2

你的''Pushe这里的符号表示?如果您已将这些内容推送到某个远程服务器或以其他方式使其发布,那么您在这些点之前或之前所做的任何更改都将要求使用*这些已发布的提交的任何其他人,*还*采取行动。如果没关系,你可以重新打底,如果没有,你不能。 – torek

+0

这让我想起http://stackoverflow.com/a/2302947/6309,但它并不完全适用于你的情况。 – VonC

回答

0

更新:似乎诀窍在于GIT_SEQUENCE_EDITOR变量

+0

为了扩大这个范围,[这里](https://stackoverflow.com/a/46403701/5037965)是一个很长的答案,它使用'GIT_SEQUENCE_EDITOR'来自动化使用'git rebase -i'来压缩类似的提交。 –