有没有什么方法可以让我在分支上运行一个脚本来改写所有包含特定子字符串的提交消息?假设我有一个repo like this:
然后我想改写所有以🚀 build version
开头并附加后缀⚠️ (rebased since)
的提交消息(在mybranch
上而不是main
上)。
我可以通过git命令、bash脚本或事件类型脚本(由ts-node或deno触发)来完成吗?
有没有什么方法可以让我在分支上运行一个脚本来改写所有包含特定子字符串的提交消息?假设我有一个repo like this:
然后我想改写所有以🚀 build version
开头并附加后缀⚠️ (rebased since)
的提交消息(在mybranch
上而不是main
上)。
我可以通过git命令、bash脚本或事件类型脚本(由ts-node或deno触发)来完成吗?
3条答案
按热度按时间mrfwxfqh1#
您可以像在this answer中那样使用
git filter-repo
来修改提交消息。有关简单的解决方案,请参见“更新提交/标记消息
如果你想修改提交或标记消息,你可以使用和上面解释的--replace-text相同的语法,例如,使用一个名为expressions.txt的文件,其中包含
然后运行
但是这不会在提交消息的末尾附加
⚠️ (rebased since)
。如果您在最后需要它,那么您需要一个
commit-callback
,就像answer I mentioned before中所做的那样。qvk1mo1f2#
受@VonC的启发,我创作了这个剧本:
(需要
brew install git-filter-repo
)(The我的脚本是在chatGPT的帮助下编写的-为编写脚本的步骤提供了明确的说明。我知道temp. ban policy of chatGPT,希望这不会表现为违反政策,因为答案不仅仅基于它,而是从一个有线索和错误的对话中推导出来的-脚本经过验证可以工作,我希望它能帮助其他人)
u5i3ibmn3#
(a)
(b)
git rebase -i HEAD~3
exec 310154e tsx reword-commit.ts
reword-commit.ts
用提交消息重写文件execa
或其他任何ts shell启动器https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History从TS运行该命令