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的第一个提交。
例子:
-
只有用户名
显式省略电子邮件地址:
git commit --author="John Doe <>" -m "Impersonation is evil."
-
只有电子邮件
从技术上讲,这是不可能的。 但是,您可以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