1. ホーム
  2. git

[解決済み] 電子メールなしで別のユーザーとしてGITコミットする/電子メールのみでコミットする

2022-05-02 13:17:42

質問

別のユーザーとして変更をコミットしようとしていますが、有効な電子メールアドレスを持っていないため、次のコマンドは私には機能しません。

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のコミットコマンドのマニュアルによると、このコマンドは

standard A U Thor <[email protected]> format

authorオプションの場合。

このフォーマットはどこで定義されていますか? AとUは何の略ですか? ユーザー名だけ、あるいはメールアドレスだけで別のユーザーをコミットするにはどうすればいいですか?

解決方法は?

その

<ブロッククオート

標準 A U Thor <[email protected]> 形式

以下のように定義されているようです。 (私の知る限りでは、全く保証はありません。)

A U ソー = ユーザー名は必須項目です。

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

<[email protected]> = 任意メールアドレス

  • 必ず< >記号の間でなければなりません。
  • メールアドレスの形式は検証されていませんので、ほぼ自由に入力できます。
  • オプションで、<>.を使って明示的に省略することができます。

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

  1. ユーザー名のみ

    メールアドレスを明示的に省略する。

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

    技術的には可能ではありません。しかし、ユーザー名として電子メールアドレスを入力し、電子メールアドレスを明示的に省略することは可能です。これはあまり意味がないように思います。 メールアドレスからユーザー名を抽出して、それをユーザー名として使う方がもっと理にかなっていると思うのですが。でも、どうしてもというなら

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

リポジトリをmercurialからgitに変換しようとしたときに、この問題にぶつかりました。 msysgit 1.7.10でコマンドをテストしてみました。