git提交可以从node.js脚本中压缩吗?

时间:2013-06-11 19:09:47

标签: git node.js

我希望能够将具有“squash commit”提交消息的最后n次提交压缩到node.js脚本的单个提交中。我知道压缩提交的唯一方法是通过交互式rebase,有没有办法从节点脚本执行此操作?

例如:

> git log --oneline | head -4
ecce153 Do not change commit
dd831f6 squash commit
c20677a squash commit
86b52fb squash commit

> ./squash.js "New commit made by squashing 3 'squash commit' commits."
ecce153 Do not change commit
as34dwf New commit made by squashing 3 'squash commit' commits.

离开这篇SO帖子https://stackoverflow.com/a/5956198/626759,我可以轻松地进入交互式rebase,但我怎样才能从节点脚本中使用它?

感谢。

1 个答案:

答案 0 :(得分:5)

你不需要做一个rebase来压缩n次提交:

git reset HEAD~4
git add .
git commit -m "squashed four commits"

这备份了HEAD四次提交,但保留了工作目录中的当前更改,然后在一次提交中添加并提交这些更改。

更短的版本

git reset --soft HEAD~4
git commit -m "squashed four commits"

--soft也会保留索引,因此您不必add