当使用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