我想做一个jdbcTemplate.update(update);
并删除其提交消息与某个正则表达式匹配的提交。例如,它可能像
git rebase
这会在删除包含字符串git rebase --drop="deletme|temporary" master
或master
的所有提交时对deleteme
进行重组。
使用标准Git工具可以做到这一点吗?如果没有,是否可以使用第三方Git工具?特别是,我希望它是一个单一的,非交互式的命令。
答案 0 :(得分:1)
答案 1 :(得分:1)
这可以使用我在this answer中使用的相同方法来完成。
首先,我们需要找到相关的提交。你可以用以下的东西来做到这一点:
git log --format=format:"%H %s" master..HEAD | grep -E "deleteme|temporary"
这将为您提供包含deleteme
或temporary
的提交消息的提交列表,这些提交消息介于master
与您当前的分支之间。这些是需要删除的提交。
将此bash脚本保存在您可以访问的位置:
#!/bin/bash
for sha in $(git log --format=format:"%H %s" master..HEAD | grep -E "deleteme|temporary" | cut -d " " -f 1)
do
sha=${sha:0:7}
sed -i "s/pick $sha/drop $sha/" $@
done
然后将rebase运行为:
GIT_SEQUENCE_EDITOR=/path/to/script.sh git rebase -i
这将自动删除其提交消息中包含deleteme
或temporary
的所有提交。
正如我在其他答案中提到的那样:
[这个脚本不允许]你自定义运行什么命令来计算要使用的提交,但如果这是一个问题,你可以传入一个环境变量来允许这样的自定义。
强制性警告:由于rebase会重写历史记录,因此对于在此分支上工作的其他人来说,这可能会造成危险/破坏。请务必清楚地告知您与正在合作的任何人所做的事情。