148

別のユーザーとしていくつかの変更をコミットしようとしていますが、有効な電子メール アドレスがありません。次のコマンドが機能しません。

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'

commit コマンドの GIT man ページでは、

standard A U Thor <author@example.com> format

--author オプション用。

このフォーマットはどこで定義されていますか? A と U は何の略ですか? ユーザー名のみまたは電子メールのみを使用して別のユーザーにコミットするにはどうすればよいですか?

4

9 に答える 9

173

この SO answerで示唆されているように、最小限必要な作成者形式は次のとおりです。

Name <email>

あなたの場合、これはあなたが書きたいことを意味します

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

Willem D'Haeseleer のコメントによると、メールアドレスを持っていない場合は、次を使用できます<>

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

git commitリンク先のマニュアルページに書かれているように、それよりも少ないものを指定すると、以前のコミットを検索するための検索トークンとして使用され、その作成者による他のコミットを探します。

于 2012-07-20T12:48:38.213 に答える
63

具体的な形式は次のとおりです。

git commit --author="John Doe <john@doe.com>" -m "Impersonation is evil." 
于 2012-07-20T12:45:57.003 に答える
43

標準AU Thor <author@example.com> 形式

次のように定義されているようです:(私の知る限り、まったく保証されていません)

AU Thor =必要なユーザー名

  • 文字の区切りは、おそらくスペースが許可されていることを示しており、イニシャルに似ている可能性もあります。
  • ユーザー名の後には 1 つのスペースが必要です。余分なスペースは切り捨てられます

<author@example.com> =オプションの電子メール アドレス

  • 常に < > 記号の間にある必要があります。
  • メールアドレスの形式は検証されていません。ほとんど何でも入力できます
  • オプション。<> を使用して明示的に省略できます。

この正確な構文を使用しない場合、git は既存のコミットを検索し、指定された文字列を含む最初のコミットを使用します。

例:

  1. ユーザー名のみ

    電子メール アドレスを明示的に省略します。

    git commit --author="John Doe <>" -m "Impersonation is evil."
    
  2. メールのみ

    技術的にこれは不可能です。ただし、電子メール アドレスをユーザー名として入力し、明示的に電子メール アドレスを省略することもできます。これはあまり役に立たないようです。メールアドレスからユーザー名を抽出し、それをユーザー名として使用する方がより理にかなっていると思います。しかし、あなたがしなければならない場合:

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

リポジトリをmercurialからgitに変換しようとしたときに、これに遭遇しました。msysgit 1.7.10 でコマンドをテストしました。

于 2012-07-23T12:01:37.540 に答える
13

補足:</p>

git commit --author="john@doe.com " -m "なりすましは悪です。"

場合によっては、コミットがまだ失敗し、次のメッセージが表示されます。

*** どなたか教えてください。

走る

git config --global user.email "you@example.com" git config --global user.name "あなたの名前"

アカウントのデフォルト ID を設定します。--global を省略して、このリポジトリでのみ ID を設定します。

致命的: 電子メール アドレスを自動検出できません (xxxx を取得しました)

「git config」を実行してから「git commit」を実行するだけです

于 2013-06-14T02:09:58.913 に答える
8

フォーマット

A U 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 
       A U 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 
       (i.e. rev-list --all -i --author=<author>); the commit author is then copied 
       from the first such commit found.

この形式を使用しない場合、git は提供された文字列をパターンとして扱い、他のコミットの作成者の中から一致する名前を見つけようとします。

于 2012-07-20T12:46:56.317 に答える
1

問題が実際のメールアドレスを隠すことである場合の代替手段...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

于 2014-08-20T02:49:05.457 に答える