GITは別のユーザーとしてメールなしで、またはメールのみでコミットする


127

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

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のマニュアルページに、

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

--authorオプションの場合。

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


3
AUは何も表さず、単なる例です:AU Thor => AUThor => Author。名前として何でも指定できます。
Samy Dindane 2012

1
私はAUトールが著者を形成していることを知っています、分離に何か意味があるのか​​と思っていました。
Willem D'Haeseleer 2012

回答:


142

このSO回答で示唆されているように、最低限必要な作成者フォーマットは

Name <email>

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

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

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

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

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


28
メールアドレスがない場合は、「name <>」と入力するだけで、偽の代わりに明示的に空白のままにできることもわかりました。
Willem D'Haeseleer 2012

2
を使用する"name <>"と、git commit --amendその後はinvalid identエラーで失敗します。そうしないでください
sanmai

7
どうやらそのオプションを使用する場合でも、git configでuser.emailとuser.nameを設定する必要があります。
qwertzguy 2016

51

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

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

1
John Doeの名前を確定すると、なぜそれがJohn Doeのパスワードを要求しないのですか?
Narek、2015年

3
@Narekこの文脈でそれは何でしょうか?
pmr 2015年

37

標準の 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でコマンドをテストしました。


13

ただ補足:

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

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

***あなたが誰であるか教えてください。

走る

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

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

致命的:電子メールアドレスを自動検出できない(xxxxを取得)

したがって、「git config」を実行し、次に「git commit」を実行するだけです


これは私が必要としたものです。企業のGitHubと公開のGitHubに別々のユーザー名とメールアドレスを持っています。プライベートメールを公開せずに変更をプッシュできるように、現在のリポジトリをパブリックGitHubユーザー名とメールを使用するように設定する必要がありました。
TBirkulosis

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は提供された文字列をパターンとして扱い、他のコミットの作成者から一致する名前を見つけようとします。


FirstName MiddleName LastNameのようなものはありません。参照してくださいこれを
Samy Dindane

3

--authorオプションは動作しません。

*** Please tell me who you are.

Run

  git config --global user.email "you@example.com"
  git config --global user.name "Your Name"

これは:

git -c user.name='A U Thor' -c user.email=author@example.com commit

これは私のために働いた唯一のものです。順序が重要であることに注意してください。git commit -c user.name="j bloggs" -am "message"エラーが発生しますfatal: Option -m cannot be combined with -c/-C/-F
マーティン

2

Git Bashを開きます。

Gitユーザー名を設定します。

$ git config --global user.name "name family" Gitユーザー名を正しく設定したことを確認します。

$ git config --global user.name

ネームファミリー

Gitメールを設定します。

$ git config --global user.email email@foo.com Gitメールが正しく設定されていることを確認します。

$ git config --global user.email

email@foo.com


0

それはすべてあなたがコミットする方法に依存しています。

例えば:

git commit -am "Some message"

~\.gitconfigユーザー名を使用します。つまり、そのファイルを開くと、次のような行が表示されます。

[user]
    email = someemail@gmail.com

変更したいメールです。BitbucketやGithubなどを介してプルリクエストを行う場合、ログインしているユーザーになります。


0

懸念が本当のメールアドレスを隠すことである場合の代替 ... 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


他のすべてのソリューションとは異なり、これは最初にuser.email/user.nameを初期化していない場合に機能します。
アンディ

-2

端末からこれら2つのコマンドを実行して、ユーザーの電子メールと名前を設定します

 git config --global user.email "you@example.com" 

 git config --global user.name "your name" 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.