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

Kyl*_*and 4 git

当与抑制自动提交(或)git merge的选项一起使用时,显然总是为下一条提交消息生成自己的模板;接下来忽略该选项。有什么办法可以抑制这种情况吗?--no-commit--squashgitgit commit-t

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

Ark*_*zyk 5

如果您在执行此操作后检查.git目录的内容git merge --squash,您将看到SQUASH_MSG包含提交消息模板的文件。该文件也是在使用 进行挤压后创建的git rebase -i。如果您不希望 Git 在执行操作时自动填充提交消息,则需要删除此文件git commitgit 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"
Run Code Online (Sandbox Code Playgroud)

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

我用 Git 2.3.1 对此进行了测试:

$ git --version
git version 2.3.1
Run Code Online (Sandbox Code Playgroud)