使用 `git merge --squash` 或 `--no-commit` 来抑制提交消息模板

使用 `git merge --squash` 或 `--no-commit` 来抑制提交消息模板

当使用git merge禁止自动提交的选项(--no-commit--squash)时,git似乎总是会为下一个提交消息生成自己的模板;下一个提交消息会git commit忽略该-t选项。有没有办法禁止这种情况?

我发现最好的解决方法是使用-m提交,然后立即运行git commit --amend。不过,这对我来说似乎很尴尬,并且它消除了在保存之前删除提交消息模板来中止提交的能力。

答案1

.git如果你在执行完后检查目录内容,git merge --squash你会看到SQUASH_MSG包含提交消息模板的文件。使用 执行压缩后也会创建此文件git rebase -i。如果你不想让 Git 在执行 时自动填充提交消息,则需要删除此文件。git commit如果将本机命令别名化以自动为你执行此操作会很有用git commit,但事实并非如此可能的使用 Git。相反,我们应该在中创建这样的别名~/.gitconfig

[alias]
         kommit = "!KOMIT_GIT_DIR=$(git rev-parse --git-dir); if [ -a "${KOMIT_GIT_DIR}/SQUASH_MSG" ] ; then rm "${KOMIT_GIT_DIR}/SQUASH_MSG" ; fi && git commit"

此行在执行之前检查 SQUASH_MSG 是否存在,如果存在则删除git commit。现在您应该执行git komit而不是git commit执行之后git merge --squash

我使用 Git 2.3.1 进行了测试:

$ git --version
git version 2.3.1

相关内容