有时候,我在功能分支中有一堆小提交,我想将它们全部压缩在一起,但还没有合并到父分支中。
我知道我可以(在此示例中,父分支是master
):
git rebase -i master
,然后将第一个之后的所有提交标记为“ squash”。
有没有一种方法可以非交互地获得相同的结果?
基本上,我想创建一个新的提交,其树与现在在功能分支头的树相同,并且其父是我指定的祖先提交(例如:master
),然后更改功能分支以指向该新提交。绝不应该有任何冲突(我偶尔会与rebase -i
发生冲突),并且与-m
应该完全是非交互的。理想情况下,在没有-m
的情况下,提交消息应默认为压缩提交的串联。
我该怎么做?
答案 0 :(得分:4)
我对壁球的看法是使用git reset --soft。假设您要压缩最近的5次提交:
git reset --soft HEAD~5
git commit -m "Feature X"
如果您还想将(几乎)单次完成的所有操作重新基准化,仍然可以使用git reset --soft