我如何找到带有特定消息的所有提交并将它们压缩到上一个提交中?
How do I find all commits with a certain message and squash them into the previous commit?
当我编码时,我经常使用 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
或 awk
来操纵 "rebase script file"。我们基本上重用了这个答案:
How do I run git rebase --interactive in non-interactive manner?
操作脚本应该看起来像这样(注意!未经测试):
#!/usr/bin
sed -i 's/pick \(.*\) --amend/squash --amend/g'
当我编码时,我经常使用 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
或 awk
来操纵 "rebase script file"。我们基本上重用了这个答案:
How do I run git rebase --interactive in non-interactive manner?
操作脚本应该看起来像这样(注意!未经测试):
#!/usr/bin
sed -i 's/pick \(.*\) --amend/squash --amend/g'