Squash 在带有数字符号(井号)的交互式 rebase 中提交

Squash commits in interactive rebase with number sign (hash sign)

我们使用带有 Git 实现的 TFS 作为我们的源代码控制。如果提交消息包括以数字符号开头的积压项目 ID(如 #1234),TFS 会将此提交直接与此项目链接。

commit message的写入没有问题,commit message在日志中正确显示。由于我写了一个 git-hook,因此在每次提交时都会设置项目编号。

当我使用 git 的 interactive rebase 时出现问题。我想压缩一些提交,但在编辑器中,数字符号被解释为 注释符号

这是它的样子:

# This is a combination of 4 commits.                                                                                                                            # This is the 1st commit message: 

#1234 Commit Message 1

# This is the commit message #2: 

#1234 some coding here

# This is the commit message #3: 

#1234 just a fix

# Please enter the commit message for your changes. Lines starting                                                                                               # with '#' will be ignored, and an empty message aborts the commit. 
.
.
.

到目前为止,我尝试使用反斜杠,但它不起作用。反斜杠随后出现在消息本身中 (\#1234 Commit Message 1)

有什么建议吗?如何在保留数字符号的同时压缩我的提交?更改提交消息文本也有同样的问题。

您需要将 core.commentChar 设置为 # 以外的某个字符,以便您可以将 # 用作提交文本,而不是注释。

您可以只在一个变基期间设置它:

git -c core.commentchar=: rebase -i ...

例如。但是如果你打算经常这样做,你可能想使用 git config 在你的每个存储库或全局配置中设置它。

压缩并关闭编辑器后,您可以修改提交并使用 # 更改文本。例如:

git commit --amend -m "#1234 just a fix"