繁体   English   中英

使用与特定模式匹配的提交消息来压缩所有提交

[英]Squash all commits with commit messages that match a certain pattern

有没有办法用与特定模式匹配的提交消息压缩所有Git提交?

理想情况下,这将是非交互式的 - 它将在命令行自动执行。

git rebase -i创建一个todo文件并调用编辑器; 假设用户编辑文件并且git解释它。 该文件采用众所周知的格式 我创建了一个以非交互方式编辑文件的shell脚本,而不是交互式编辑器; 我使用sed -i来编辑它; 我使用s/// search命令查找带有$PATTERN pick命令,并用squash命令替换它们。

档案squash.sh ; 把你的模式(基本的正则表达式)放在那里:

#! /bin/sh
exec sed -i 's/^pick \([^ ]\+\) $PATTERN.\+$/squash \1/' $1

命令行:

chmod +x squash.sh
GIT_EDITOR=./squash.sh git rebase --interactive $COMMIT_ID

这无法满足您的理想情况,这将是非交互式...请求,但我这样做是为了实现有效的同样的事情: https//twitter.com/csswizardry/status/843040649666596865

更一般的解决方案如下

:g/<pattern>/normal cws

这意味着:

  • :g/ - 查找包含...的行
  • <pattern>/ - ...这个字符串
  • normal - 进入正常模式
  • cws - 将单词更改为s(用于壁球)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM