git - 如何找到带有特定消息的所有提交并将它们压缩到上一个提交中?
问题描述
当我一直在编码时,我经常用它来保存我的工作,如果我在之前的提交中犯了错误,我git commit -am <message>
偶尔会使用它。git commit --amend
最近我觉得我很聪明,并开始将它们结合起来git commit -am --amend
。今天我查看了我的 git 日志,并收到了带有消息的随机微小提交--amend
。我现在明白我的错误:--amend
被解释为消息。
幸运的是,它们看起来并没有多个堆叠在一起,所以我需要做的就是类似for each commit with '--amend', squash into previous commit
.
有没有办法我可以做到这一点?
作为我的 git 日志中的示例:
* commit f9d69146e47823d6cdc5e0856257b5f63518268d
| Author: Batman <brucewayne@gmail.com>
| Date: Mon Aug 5 19:18:21 2019 -0400
|
| --amend
|
* commit b07d42e8802dddc144a795471f789b7eb1475ccb
| Author: Batman <brucewayne@gmail.com>
| Date: Mon Aug 5 19:07:47 2019 -0400
|
| Some key feature that allows user to use product
|
解决方案
您可以使用sed
orawk
为此来操作“变基脚本文件”。我们基本上重用了这个答案:
如何以非交互方式运行 git rebase --interactive?
操作脚本应如下所示(注意!未经测试):
#!/usr/bin
sed -i 's/pick \(.*\) --amend/squash \1 --amend/g' $1
推荐阅读
- angular - 为什么包裹在对象中的 Angular InjectionToken 会抛出错误?
- ajax - 将 ajax 数据发送到路由以调用控制器方法
- intel-fpga - Quartus 18.0 Lite MAX10 器件板型号未在编程器菜单中列出
- yii2 - 在 Yii 2 模型中定义多个场景并使用多个场景进行验证
- angular - 刷新页面时我丢失了有关用户的信息?Angular 2+ NgRx 商店
- java - API 上 GET 调用的 403 状态
- java - Rotating Rectangle with mouse isn't consistant
- java - 获取 org.json.JSONEXCEPTION:解码令牌时字符处的未确定对象
- laravel - Laravel 雄辩的关系与数据透视表
- database-normalization - 标准化表格