Git:「あなたが誰であるか教えてください」エラー


226

Chefといくつかのアドホックbashスクリプトを使用して一緒にブートストラップするアプリサーバーがあります。問題は、これらのアプリサーバーの1つで更新を実行したいときに、次のエラーが発生することです。

19:00:28: *** Please tell me who you are.

Run

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

git pull origin masterアプリサーバーを更新するたびにシンプルに設定する必要がありますか?とにかくこの動作を上書きして、名前と電子メールが設定されていないときにエラーにならないようにしていますか?


3
私が遭遇したことはありませんが、名前とメールが偽物であっても、名前とメールを追加するだけで問題はありません。
ショーン2012

10
はい、git pullたとえば「simple」がコミットを作成する場合は、たとえばマージを行ったため、これらを設定する必要があります。
fork0

1
一方向の展開のシナリオについて説明します。コミットの自動マージを回避するために、資格情報を追加しません。はい、このエラーの問題が表示されますが、これは、誰かが本番環境を利用していて、手動でファイルを変更してマージをトリガーしていることを意味します。
Alex Skrypnyk

回答:


249

私はphpスクリプトを呼び出してgitを初期化してコミットするのに何時間も費やしています。そして、私はワークフローが次のようであるべきだとわかった:

1.git init
2.git config user.name "someone"
3.git config user.email "someone@someplace.com"
4.git add *
5.git commit -m "some init msg"

[23]と1を交換すると、設定はまったく機能しません。

これが助けになることを望みます。


これは、gitリポジトリを初期化するための正しい方法です。しかし、リポジトリを更新するには@gfxmonkソリューションの方が優れています
Davisein '21

これがどのように機能し、なぜこれを実行する前にエラーが発生したのか説明していただけますか
チンマヤB 2016

1
コマンドに--globalスイッチを追加git configして、OSアカウントに対して1回行うことができます。その後、手順2〜3は必要ありません。
x-yuri 2016年

50

を行う代わりにgit pull、次のことができます。

git fetch
git reset --hard origin/master

どちらもgitユーザー名/メールを設定する必要はありません。

これにより、コミットされていないローカル変更/コミットが破棄され、HEADは(ブランチではなく)コミットをポイントしたままになります。ただし、ローカルで変更を加えたり、そのリポジトリにコミットしたりしてはならないため、これらのどちらもアプリサーバーにとって問題にはなりません。


この状況ではgit pullの自動マージは危険です。リセットすることをお勧めします。
Davisein 2014年

使用した方がいいのではないでしょうgit fetch && git reset --hard HEADか?
jacoor 2015年

@jacoor nope:git reset --hard HEADコミットされていない変更を破棄するだけで、ワークスペースのベースとなるコミットは変更されません(定義上、すでにヘッド上にあるため)
gfxmonk

33

sourcetreeを使用している場合:リポジトリ->リポジトリ設定->詳細-> [グローバルユーザー設定を使用]チェックボックスをオフにします

私にとってはうまくいきました。


私の場合はもう一度確認する必要がありましたが、とにかく!あなたの助けをありがとう
Karoly

32

それは私のために動作します、これを試してください..あなたはリモートアクセスであなたの端末を設定する必要があります。

     git config --global user.name "abc"
     git config --global user.email "abc@example.com"

10

ブートストラッププロセスを更新${HOME}/.gitconfigして、適切なコンテンツでを作成するか、既存のプロセスをどこかからコピーします。


9
git config user.email "insert github email here"
git config user.name "insert github real name here"

これは私にとってはうまくいきました。


4

同じ問題が私にもあり、デフォルト名と電子メールリポジトリ設定を追加することで解決しました。

ドロンが示唆したように-

sourcetreeを使用している場合:リポジトリ->リポジトリ設定->詳細-> [グローバルユーザー設定を使用]チェックボックスをオフにします。

デフォルトの名前とメールアドレスを追加します。


4

私の場合、チャドが前述したように、「メール」という単語に「e」がありませんでしたが、あなたにはそうではありません。次のコマンドを実行して、すべてが期待どおりにプルされているかどうかを確認してください。

git config -l

4

あなたはそのようなあなたの電子メールを書く必要があります

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

次に:ユーザー名を書き込みます

 git config --global user.name "Your Name"

その後、Poupupウィンドウが表示されます

投稿したいアカウントのユーザー名とメール を書く


3

私にとっての問題はネットワーク接続でした。Wi-Fiに再接続すると、詳細を取得して問題なくコミットできました。


2

アプリサーバーを更新するたびに、シンプルなgit pull originマスターを実行するために、これを本当に設定する必要がありますか?とにかくこの動作をオーバーライドして、名前と電子メールが設定されていないときにエラーにならないようにしますか?

一度だけ尋ねられ、このマシンのrsa公開鍵が、コミットまたはプルリクエストを渡そうとしているgithubアカウントに追加されていることを確認します。

これについての詳しい情報は見つけることができます:ここに


1
リンクが壊れている
アリスシュヴァルツェ

2

私はこれを不完全なエラーメッセージとして持っていました:上記のエラーでPerl CGIプロセス(githubから自動デプロイするWebhook)で失敗した
git pullcmd行で
git pull正常に動作しました。

こうgit status識別激突ファイルを。並べ替えて問題を修正しました。

後でいくつかの構成設定を変更したときに問題が再発しました。

今回は、$ HOMEと$ USERの環境変数を設定することで修正されました(CGIプロセスではデフォルトで設定解除されています)。


2

設定ファイルを見てください。

リポジトリ>リポジトリ設定>設定ファイルの編集。

[user]セクションが存在するかどうかを確認してください。ユーザーセクションがない場合は、追加します。

例:

[user]
name = "your name"
email = "your email"

2

私はheroku cli 1を使用します。すべてのユーザー名とユーザーの電子メールを使用する必要があります

$ git config --global user.email .login email。

$ git config --global user.name .heroku name。

  1. git pull [git url]
  2. git init
  3. git add *

    5 git commit -m "config user.name、user emailの後"

  4. git push herokuマスター


2

私はJenkinsを使用していて、リリースを実行しようとしたときにこの問題に遭遇しました(gitコミットが必要です)。問題を修正するために、カスタムユーザー名/電子メールアドレスを追加する必要がありました(図を参照)。カスタムユーザー名/メールアドレスこれにより、コードがチェックアウトされたときに、リリースの実行時にビルドユーザーの名前/電子メールアドレスが確実に使用されました。この構成は、Jenkins Multibranch Pipelineプロジェクト構成から入手できます。



2

私見、このエラーを解決する適切な方法は、グローバルgit構成ファイルを構成することです。

これを行うには、次のコマンドを実行します。 git config --global -e

デフォルトのgit設定を挿入できるエディターが表示されます。

ここにいくつかあります:

[user]
    name = your_username
    email = your_username@users.noreply.github.com 
[alias]
    # BASIC
    st = status
    ci = commit
    br = branch
    co = checkout
    df = diff

詳細については、Gitのカスタマイズ-Git構成を参照してください。

次のようなコマンドが表示されたら、git config...

$ git config --global core.whitespace \
    trailing-space,space-before-tab,indent-with-non-tab

...次のように、それをグローバルgit構成ファイルに追加できます。

[core]
   whitespace = space-before-tab,-indent-with-non-tab,trailing-space

1回限りの構成では、次のようなものを使用できます git config --global user.name 'your_username'

git構成をグローバルに設定しない場合は、ローカルで作業するgitリポジトリごとに設定する必要があります。

user.nameとuser.emailの設定はgitにあなたが誰であるかを伝えるので、後続のgit commitコマンドは文句を言わないでしょう。*** Please tell me who you are.

多くの場合、gitが実行を提案するコマンドは、実行すべきものではありません。今回、提案されたコマンドは悪くありません:

$ git commit -m 'first commit'

*** Please tell me who you are.

Run

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

ヒント:gitに慣れるまで、提案されたgitコマンドを実行して機能すると思われるものを探索する前に、プロジェクトファイルのバックアップを作成しておくと、ベーコンを何度か保存できました。


2

メールアドレスを自動検出できません。

デフォルトでは、システムのユーザー名がのようになりabc@xyz.noneます。

したがって、メールを以下のように設定する必要があります。

git config user.email "someone@gmail.com"

電子メールを設定した後、gitコマンドを実行して変更をコミットできます。

  1. git init
  2. git add *
  3. git commit -m "何らかの初期メッセージ"

1

一部のファイルをコミットしようとしたときに、このエラーメッセージに遭遇しました。

単に実行してgit fetchからもう一度コミットを試すと、うまくいきました。


0

修正するには私が使用します:git config --global user.email "you@example.com"と動作します。

user.mailは機能しません。たぶんE. Typoを置く必要がありますか?


OPは、これが各更新に本当に必要かどうかを知りたいと思います。
tbrk

-5

それはタイプミスです。誤って "user.mail"に " e " を設定していません。グローバル設定で「user。e mail」を設定して修正します

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

ここに解決策が見つかりました

https://stackoverflow.com/a/14662703


3
このページの「e」のない「user.mail」はどこにありますか?
チャドヌイ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.