git提交作为不同的用户没有电子邮件/或只有电子邮件

我试图作为一个不同的用户提交一些更改,但我没有一个有效的电子邮件地址,下面的命令不工作对我来说:

git commit --author="john doe" -m "some fix" fatal: No existing author found with 'john doe' 

尝试仅使用电子邮件地址提交时遇到同样的问题

 git commit --author="john@doe.com" -m "some fix" fatal: No existing author found with 'john@doe.com' 

在提交命令的git手册页上说,我可以使用

 standard AU Thor <author@example.com> format 

对于 – 作者选项。

这个格式在哪里定义? A和U代表什么? 我如何使用只有用户名或只有电子邮件的不同用户?

正如在这个答案中暗示的那样,所需的最小作者格式是

 Name <email> 

在你的情况下,这意味着你想写

 git commit --author="Name <email>" -m "whatever" 

每Willem D'Haeseleer的评论,如果你没有电子邮件地址,你可以使用<>

 git commit --author="Name <>" -m "whatever" 

正如你在链接到的git commit手册页上所写的那样,如果你提供了比这更less的东西,那么它被用作search标记来search前面的提交,寻找那个提交者的其他提交。

具体格式是:

 git commit --author="John Doe <john@doe.com>" -m "Impersonation is evil." 

标准 AU Thor <author@example.com>格式

似乎被定义如下:(据我所知,绝对没有保修)

AU Thor = 所需的用户名

  • 字符的分隔可能表明空格是允许的,也可能是类似的首字母缩写。
  • 用户名必须跟着1个空格,额外的空格将被截断

<author@example.com> = 可选的电子邮件地址

  • 必须始终在<>符号之间。
  • 电子邮件地址格式没有validation,你几乎可以input任何你想要的
  • 可选的,你可以通过使用<>来明确地忽略它

如果你不使用这个确切的语法,git将search现有的提交并使用包含你提供的string的第一个提交。

例子:

  1. 只有用户名

    显式省略电子邮件地址:

     git commit --author="John Doe <>" -m "Impersonation is evil." 
  2. 只有电子邮件

    从技术上讲,这是不可能的。 但是,您可以input电子邮件地址作为用户名,并明确省略电子邮件地址。 这似乎不是很有用。 我认为从电子邮件地址中提取用户名,然后将其用作用户名会更有意义。 但是,如果你必须:

     git commit --author="john@doe.com <>" -m "Impersonation is evil." 

我尝试将库从mercurial转换为git时跑到这。 我testing了msysgit 1.7.10上的命令。

格式

 AU Thor <author@example.com> 

只是意味着你应该指定

 FirstName MiddleName LastName <email@example.com> 

看起来中间和姓氏是可选的(也许电子邮件之前的部分根本没有严格的格式)。 尝试,例如,这样的:

 git commit --author="John <john@doe.com>" -m "some fix" 

正如文件所说:

  --author=<author> Override the commit author. Specify an explicit author using the standard AU Thor <author@example.com> format. Otherwise <author> is assumed to be a pattern and is used to search for an existing commit by that author (ie rev-list --all -i --author=<author>); the commit author is then copied from the first such commit found. 

如果你不使用这种格式,git将提供的string作为模式对待,并尝试在其他提交的作者中find匹配的名称。

只是补充:

git commit –author =“john@doe.com”-m“模仿是邪恶的。”

在某些情况下,提交仍然失败,并向您显示以下消息:

***请告诉我你是谁。

git config –global user.email“you@example.com”git config –global user.name“Your Name”

设置您的帐户的默认身份。 省略–global仅在此存储库中设置标识。

致命的:无法自动检测电子邮件地址(得到xxxx)

所以只要运行“git config”,然后“git commit”

如果你正在向Github提交你不需要真正的电子邮件,你可以使用<username>@users.noreply.github.com

无论是否使用Github,您可能首先需要更改提交者的详细信息(在Windows上使用SET GIT_...

 GIT_COMMITTER_NAME='username' GIT_COMMITTER_EMAIL='username@users.noreply.github.com' 

然后设置作者

 git commit --author="username <username@users.noreply.github.com>" 

https://help.github.com/articles/keeping-your-email-address-private