git-am没有正确读取配置

时间:2016-06-14 23:02:42

标签: git git-config

git am --continue似乎没有正确读取我的配置。

git am --continue 
Applying: 
fatal: empty ident name (for <>) notallowed

我尝试过遵循建议 git post-receive hook "empty ident name"。运行user.name时,最初user.emailgit config --global -l是正确的。我按照上一个问题中的建议进行操作,因此git config --local -l也会返回完全相同的值。

我发现奇怪的是(for <>)在错误消息中。从上述问题的配置来看,remote.origin.url似乎被忽略了。

否则我的设置完美无瑕。这是我第一次遇到这种类型的错误。

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

我认为事实git am忽略了全局配置值是设计的 - 提交应该有补丁作者的名称/电子邮件,而不是你的。

相反,在继续时,git am会从文件.git/rebase-apply/author-script中读取此信息,该文件应在git mailinfo之前填充正确的值,然后停止:

GIT_AUTHOR_NAME='Committer'
GIT_AUTHOR_EMAIL='email@example.org'
GIT_AUTHOR_DATE='Thu, 28 Apr 2016 11:38:59 -0700'

很可能,应用的.patch - 文件格式不正确(即缺少From:Date:行),因此git mailinfo无法弄清楚这些价值观。

您可以手动输入,然后运行git am --continue以继续使用正确的值。

答案 1 :(得分:0)

git am 可能会忽略名称的另一种情况:Git 过去在接受补丁电子邮件时拒绝将非常短的字符串作为作者姓名。

Git 2.33(2021 年第三季度)修复了这个问题。

请参阅 commit 72ee47cedef (edef1c)(2021 年 5 月 16 日)。
(2021 年 6 月 10 日于 Junio C Hamano -- gitster --commit 26b25e0 合并)

<块引用>

mailinfo:不要丢弃 3 个字符以下的名称

签字人:edef

<块引用>

有时我会收到一些名字很短的人的补丁,在我的文化环境中,这些补丁并不少见(如“Falsehoods Programmers Believe About Names”中所示)。
令我沮丧的是,git-am(man) 目前放弃了他们的名字,并用他们的电子邮件地址代替。