【问题标题】:Automatically reword all rebased commits自动改写所有重新提交的提交
【发布时间】:2016-07-06 21:22:05
【问题描述】:

我希望能够在将提交消息推送到远程之前对其进行修改,但我希望自动执行此操作。

我可以通过这样做来重写我所有的额外提交

git rebase -i origin/master

这会打开一个编辑器,我可以在其中将所有提交从 pick 更改为 reword。然后它会弹出编辑器,我可以在其中修改我的提交消息。

约束总结:

  • 我不想每次提交都更改为reword。
  • 我不想手动输入每个提交哈希。

有没有办法像这样做rebase?

【问题讨论】:

  • 您是否尝试对每条消息进行相同的更改?也许举个例子会有所帮助。
  • 我想利用 reword 功能而不必交互式地变基。为了清楚起见,我将编辑我的问题

标签: git bash


【解决方案1】:

由于问题对编辑的性质有点模糊,这些只是你可以做什么的提示。

我不希望每次提交都改写。

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

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

我不想手动输入我想改写消息的每个提交。

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

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

查看以前的答案。

【讨论】:

  • 这是完美的git rebase -i origin/master -x 'git commit --amend'
  • 谢谢,我不知道-c(不过请编辑您的评论,-c 之后还有一个额外的config)
  • @λuser 您可以使用git -c sequence.editor='sed -i s/pick/reword/' rebase -i 代替永久配置。这完全消除了您答案的笨拙。你甚至可以试试这个别名 git config alias.reword '-c sequence.editor="sed -i s/pick/reword/" rebase -i'
猜你喜欢
  • 2013-06-30
  • 1970-01-01
  • 2021-03-15
  • 2014-06-12
  • 2021-12-31
  • 1970-01-01
  • 2023-04-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多