git commit --squash选项有什么用,为什么会有用?

问题描述 投票:1回答:1

我一直在寻找一种替代的解决方案,用于压缩分支中的一系列提交。我过去所做的是使用git rebase -i HEAD~<#commits>,然后选择要压扁的壁球。通常,我pick使用最新的提交,并压缩之间的冗余提交。

此方法相当有效,但我希望有一个更快的方法。我注意到--squash有一个git commit选项。但是我不确定这是如何工作的。它到底有什么作用?如何使用?这可以解决我的问题吗?

git git-commit git-commands
1个回答
2
投票

documentation解释得很好:

--squash=<commit>

构造一个与rebase --autosquash一起使用的提交消息。提交消息主题行是从具有“ squash!”前缀的指定提交中提取的。可以与其他提交消息选项(-m /-c/-C/ -F)。参见git-rebase[1]详细信息。

[这意味着--squash(也是--fixup标志)将提交作为参数,并格式化消息以供--autosquash使用。可以在配置中设置rebase.autosquash = true以缩短整个过程。

如果您要压缩最近的N次提交,则可以执行以下操作:

git reset --soft HEAD~N && git commit

[这会将HEAD重置为HEAD~N,因此索引和工作目录根本不会改变,这意味着您现在可以使用git commit并为所有更改创建单个提交。

© www.soinside.com 2019 - 2024. All rights reserved.