自动重新编写所有重新提交的提交

Bry*_*rew 5 git bash

我希望能够在将它们推送到我的遥控器之前修改我的提交消息,但我想自动执行此操作.

我可以通过执行来重新编写所有其他提交

git rebase -i origin/master
Run Code Online (Sandbox Code Playgroud)

这会打开一个编辑器,我可以将所有提交更改pickreword.然后它将调出编辑器,我可以在其中修改我的提交消息.

约束摘要:

  • 我不想要改变每一个提交reword.
  • 我不想手动输入每个提交哈希.

有没有办法做这样的rebase?

λus*_*ser 8

由于编辑的性质有点模糊,这些只是你可以做什么的线索.

我不想将每个提交更改为reword.

您可以更改git-rebase -iwith 使用的编辑器git config sequence.editor 'sed -i s/pick/reword/',这样就不会为rebase-todo弹出编辑器,并且会替换选择.但这有点笨拙,因为你必须在之后取消配置.(还有core.editor其他情况,和$EDITOR).

你也可以跑git rebase origin/master -x 'git commit --amend'.在rebase-todo中-x添加exec <argument of the -x>一行后的行pick.注意这里没有-i必要.例如,修改将允许您更改提交消息git commit --amend -m "new message".

我不想手动输入我想要重写消息的每个提交.

您可以将EDITOR变量用于以您希望的方式编辑的非交互式命令,但我不知道您想要进行哪种编辑.

我想用除了pick之外的东西来重新定义所有新提交

见前面的答案.

  • @λuser而不是一个永久配置,你可以做`git -c sequence.editor ='sed -is/pick/reword /'rebase -i`.这完全消除了你的答案的笨拙.你甚至可以尝试这个别名git config alias.reword'-c sequence.editor ="sed -is/pick/reword /"rebase -i' (3认同)