有没有一种方法可以非交互式地对要素分支中的所有内容进行变基和压缩?

时间:2019-03-22 17:31:03

标签: git git-rebase git-squash

有时候,我在功能分支中有一堆小提交,我想将它们全部压缩在一起,但还没有合并到父分支中。

我知道我可以(在此示例中,父分支是master):

git rebase -i master

,然后将第一个之后的所有提交标记为“ squash”。

有没有一种方法可以非交互地获得相同的结果?

基本上,我想创建一个新的提交,其树与现在在功能分支头的树相同,并且其父是我指定的祖先提交(例如:master),然后更改功能分支以指向该新提交。绝不应该有任何冲突(我偶尔会与rebase -i发生冲突),并且与-m应该完全是非交互的。理想情况下,在没有-m的情况下,提交消息应默认为压缩提交的串联。

我该怎么做?

1 个答案:

答案 0 :(得分:4)

我对壁球的看法是使用git reset --soft。假设您要压缩最近的5次提交:

git reset --soft HEAD~5
git commit -m "Feature X"

如果您还想将(几乎)单次完成的所有操作重新基准化,仍然可以使用git reset --soft

How to squash/rebase in a single shot