2017-04-11 38 views
2

我跑了一个互动变基高达承诺abcdefGit的前面加上所有提交的信息互动变基

git rebase -i abcdef 

在编辑器 - Vim的我改变了所有pick hash线

reword hash PREFIX: Original commit message使用这个vim的命令

%s/pick \(\w\{7}\)/reword \1 PREFIX:/

但随后混帐接着提示我编辑的每个消息承诺。有没有简单的方法批量这个过程?

回答

2
GIT_EDITOR='sed -i "1s/^/PREFIX: /"' GIT_SEQUENCE_EDITOR=vim \ 
     git rebase -i abcdef 

或交替你可以

git -c core.editor='sed -i "1s/^/PREFIX: /"' \ 
     -c sequence.editor=vim \ 
     rebase -i abcdef 

,如果你不想使用环境覆盖。

如果你知道你要改写所有这些,你甚至可以用sed序列,GIT_SEQUENCE_EDITOR='sed -i "s/^pick/reword/"'

+0

@jtill你觉得https://davidwalsh.name/update-git-commit-messages什么? – peter

+0

filter-branch也可以工作,这只是目前最方便的问题。有时候你需要一把螺丝刀,有时候你需要一个撬棒,有时候会花一分钱,有时候他们最终都会完成这项工作,而这只是当前最好的一个问题。 'git commit --amend'用于签出提交,'git rebase -i'用于大容量混洗以及合并elision和轻量级rewords,'git filter-branch'用于批量批处理作业,其中您所做的并不是大块头洗牌和重新开始筹备开始。 – jthill

+0

第二个示例在sed命令中有一个小错字 - 缺少斜杠。它应该是'sed -i“1s/^/PREFIX:/”'如上。 – jthodges