[英]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.