git的承诺为不同的用户没有电子邮件/或只能通过电子邮件

git的承诺为不同的用户没有电子邮件/或只能通过电子邮件

问题描述:

我想提交一些变化为不同的用户,但我没有一个有效的电子邮件地址,下面的命令不是为我工作:git的承诺为不同的用户没有电子邮件/或只能通过电子邮件

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

试图只用电子邮件地址

git commit --author="[email protected]" -m "some fix" 
fatal: No existing author found with '[email protected]' 

在git的手册页提交的commit命令它说我可以用

standard A U Thor <[email protected]> format 
时,我有同样的问题

用于 - 作者选项。

此格式在哪里定义? A和U代表什么?我如何为仅使用用​​户名或只有电子邮件的其他用户提交?

+1

*金*并不代表什么,它只是一个例子:* AU雷神* => *作者* => *作者* 。你可以指定任何你想要的名字。 – 2012-07-20 12:56:42

+1

我知道阿托尔形式的作者,我想知道在分离中是否有任何意义。 – 2012-07-20 13:25:05

+0

不,有。 – 2012-07-20 13:39:29

标准。U托尔<作者@例子。COM >格式

似乎随后要定义: (据我所知,完全没有保证)

AU托尔= 所需的用户名

  • 的分离字符可能是表示允许空格,它也可能与首字母大写相似。
  • 的用户名已被后跟1个空间,多余的空格将被截断

<[email protected]> = 可选的电子邮件地址

  • 必须始终< >符号之间。
  • 的电子邮件地址格式不明确验证通过使用<>

如果不使用这个确切的语法,你几乎可以输入任何你想要的

  • 可选的,你可以省略这个, git将搜索现有的提交并使用包含提供的字符串的第一个提交。

    例子:

    1. 只有用户名

      略去电子邮件地址明确:

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

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

      git commit --author="[email protected] <>" -m "Impersonation is evil." 
      

    我试图将存储库从善变转向Git的时候跑了这一点。 我测试了msysgit 1.7.10上的命令。

  • 的具体格式是:

    git commit --author="John Doe <[email protected]>" -m "Impersonation is evil." 
    
    +0

    为什么不要求John Doe的密码,如果你提交他的名字? – Narek 2015-03-17 06:28:52

    +2

    @Narek在这种情况下会是什么? – pmr 2015-03-20 00:28:46

    格式

    A U Thor <[email protected]> 
    

    只是意味着你应该指定

    FirstName MiddleName LastName <[email protected]> 
    

    貌似中间和最后一个名称是可选的(也许之前的部分电子邮件根本没有严格的格式)。尝试,例如,这样的:

    git commit --author="John <[email protected]>" -m "some fix" 
    

    由于文档说:

    --author=<author> 
         Override the commit author. Specify an explicit author using the standard 
         A U Thor <[email protected]> format. Otherwise <author> is assumed to 
         be a pattern and is used to search for an existing commit by that author 
         (i.e. rev-list --all -i --author=<author>); the commit author is then copied 
         from the first such commit found. 
    

    如果不使用这种格式,git的零食提供的字符串作为模式,并试图找出之间的匹配名单其他承诺的作者。

    +0

    没有* FirstName MiddleName LastName *之类的东西。请参阅[this](http://stackoverflow.com/questions/11579311/git-commit-as-different-user-without-email-or-only-email#comment15320898_11579311)。 – 2012-07-20 12:59:12

    必需的最少笔者格式,如this SO answer暗示到,是

    Name <email> 
    

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

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

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

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

    A如果您提供的内容少于此值,则将其用作搜索标记以搜索以前的提交,并查找该作者的其他提交。

    +21

    刚发现如果你没有电子邮件地址,你也可以直接键入“name ”,明确地将其留空而不是输入虚假。 – 2012-07-20 13:29:31

    +0

    如果你以后使用''name “'和'git commit --amend',它会失败,并且出现'invalid ident'错误。所以只是不要 – sanmai 2016-06-16 08:54:15

    +1

    显然即使使用该选项,你仍然需要在你的git配置中设置user.email和user.name,否则git会抱怨。 – qwertzguy 2016-12-16 01:07:44

    只是补充:

    git的承诺--author = “[email protected]” -m “模拟是邪恶的。”

    在某些情况下,提交仍然失败,并告诉您以下消息:

    ***请告诉我你是谁。

    运行

    混帐配置--global user.email “[email protected]” 混帐配置--global user.name “你的名字”

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

    致命的:无法自动检测的电子邮件地址(有XXXX)

    所以只需运行“混帐配置”,然后“git的承诺”

    如果您正致力于Github上你不需要一个真正的电子邮件,您可以使用<username>@users.noreply.github.com

    无论使用Github上与否,你可能首先要改变你的提交者细节(在Windows上使用SET GIT_...

    GIT_COMMITTER_NAME='username' 
    GIT_COMMITTER_EMAIL='[email protected]' 
    

    然后设置笔者

    git commit --author="username <[email protected]>" 
    

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