Git 批量修改Commit Message

Ruby 脚本使用 git rebase 命令批量给 commit message 加前缀

原 commit log

1
2
3
4
5
6
7
8
9
10
11
12
c97a228 修改通知设置页问题
4726e70 关于页面,顶部视图自动调整高度至最佳
70a4b2c fix关于页面导航栏问题,去除关于、系统通知、推送管理页面Storyboard关联
0e369b6 关于LesPark页面UI完成
7186152 更改系统通知界面UI
5afc075 推送管理页面,当无更多关注时去除底部上拉加载更多动画。
19c1ecd 更改推送管理页面的样式,修复该页面一些bug
b5feb88 重写语言设置和公制页
3f3ca86 Refactor setting cells
b7e212e 重写设置页、隐私页,统一设置模块cell
8349479 重写账号绑定页
7fcacb9 重写账号信息页

修改之后

1
2
3
4
5
6
7
8
9
10
11
12
c97a228 [设置] 修改通知设置页问题
4726e70 [设置] 关于页面,顶部视图自动调整高度至最佳
70a4b2c [设置] fix关于页面导航栏问题,去除关于、系统通知、推送管理页面Storyboard关联
0e369b6 [设置] 关于LesPark页面UI完成
7186152 [设置] 更改系统通知界面UI
5afc075 [设置] 推送管理页面,当无更多关注时去除底部上拉加载更多动画。
19c1ecd [设置] 更改推送管理页面的样式,修复该页面一些bug
b5feb88 [设置] 重写语言设置和公制页
3f3ca86 [设置] Refactor setting cells
b7e212e [设置] 重写设置页、隐私页,统一设置模块cell
8349479 [设置] 重写账号绑定页
7fcacb9 [设置] 重写账号信息页

Ruby 脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/usr/bin/env ruby
PROJECT_PATH = "/Users/zhudf/LegendPark/lespark_ios"
COMMIT_PREFIX = "[设置] "
def construct_commit_msg(orig_msg)
new_msg << COMMIT_PREFIX
orig_msg.split.each_with_index do |s, i|
if i != 0
new_msg << s
end
end
new_msg
end
def batch_amend
puts 'Change to project dir...'
Dir:chdir(PROJECT_PATH)
puts 'Batch amend commit message :::::::: BEGIN'
while $? == 0
orig_msg = `git log --oneline -1`
new_msg = construct_commit_msg(orig_msg)
`git commit --amend -q -m #{new_msg} && git rebase --continue > /dev/null`
end
puts 'Batch amend commit message :::::::: END'
end
batch_amend