힘내 : "당신이 누구인지 알려주세요"오류


226

Chef + 일부 임시 bash 스크립트를 사용하여 함께 부트 스트랩하는 앱 서버가 있습니다. 문제는 이러한 앱 서버 중 하나에서 업데이트를 실행하려고 할 때 얻을 수 있습니다.

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
내가 만난 것에서, 다시 한 번 가짜 이름과 이메일 인 경우에도 이름과 이메일을 추가하는 데 아무런 문제가 없습니다.
— sean

10
예, "간단한" git pull커밋을 만들려면 예를 들어 병합을 수행했기 때문에이를 설정해야합니다.
— 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

어떻게 작동하고 왜 그렇게하기 전에 오류가 발생했는지 설명 할 수 있습니까?
— Chinmaya B

1
명령 에 --global스위치를 추가 git config하고 OS 계정에 대해 한 번 수행 할 수 있습니다. 그 후에 2-3 단계는 필요하지 않습니다.
— x-yuri

50

을 수행하는 대신 다음을 수행 git pull할 수 있습니다.

git fetch
git reset --hard origin/master

이들 중 어느 것도 git 사용자 이름 / 이메일을 구성 할 필요가 없습니다.

이것은 커밋되지 않은 로컬 변경 / 커밋을 삭제하고 HEAD가 브랜치가 아닌 커밋을 가리 키도록합니다. 그러나 로컬로 변경하거나 해당 리포지토리에 커밋해서는 안되므로 앱 서버에는 문제가되지 않습니다.


git pull의 자동 병합은이 상황에서 위험하므로 재설정하는 것이 좋습니다.
— Davisein

사용하는 것이 낫지 git fetch && git reset --hard HEAD않습니까?
— jacoor

@jacoor 아니가 : git reset --hard HEAD단지 당신의 uncomitted 변경을 멀리 던져, 변경되지 않는 작업 영역 (정의에 의해 당신이 머리에 이미있어 이후)를 기반으로 어떤 커밋
— gfxmonk

33

소스 트리를 사용하는 경우 : 저장소-> 저장소 설정-> 고급-> "전역 사용자 설정 사용"상자를 선택 취소하십시오.

나를 위해 일했다.


내 경우에는 다시 확인해야했지만 어쨌든! 도와 주셔서 감사합니다
— 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

같은 문제가 나와 함께 기본 이름과 이메일 리포지토리 설정을 추가하여 해결했습니다.

Doron이 제안한 것처럼-

소스 트리를 사용하는 경우 : 저장소-> 저장소 설정-> 고급-> "전역 사용자 설정 사용"상자를 선택 취소하십시오.

기본 이름과 이메일 주소를 추가하십시오.


4

제 경우에는 Chad가 위에서 언급 한 것처럼 "email"이라는 단어에 "e"가 누락되었지만 귀하의 경우에는 해당되지 않습니다. 모든 것이 예상대로 당기고 있는지 확인하려면 다음 명령을 누르십시오.

git config -l

4

당신은 그런 식으로 당신의 전자 우편을 써야합니다

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

그런 다음 : 사용자 이름 작성

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

그 팝업 후 창이 나타납니다

기여하고자하는 계정에 대해 USERNAME & EMAIL을 작성하십시오.


3

나를 위해 문제는 네트워크 연결이었습니다 .Wi-Fi에 다시 연결하면 세부 정보를 가져 와서 문제없이 커밋 할 수 있습니다.


2

앱 서버를 업데이트 할 때마다 간단한 git pull origin master를 수행하기 위해 이것을 설정해야합니까? 이름과 이메일이 설정되지 않은 경우 오류가 발생하지 않도록이 동작을 무시할 수 있습니까?

한 번만 요청하면 풀 머신 요청을 커밋하거나 전달하려는 github 계정에이 머신의 rsa 공개 키가 추가되었는지 확인합니다.

이에 대한 자세한 내용은 여기를 참조하십시오.


1
링크가 끊어짐
— Alice Schwarze

2

나는 이것을 잘못된 오류 메시지로 가지고 있었다 : 위의 오류와 함께 Perl CGI 프로세스 (github에서 자동 배포하기위한 webhook)에서
git pullcmd 라인
git pull에서 제대로 작동했습니다.

이렇게 git status식별 된 충돌하는 파일을. 그것을 정렬하면 문제가 해결되었습니다.

나중에 일부 구성 설정을 변경하면 문제가 다시 발생했습니다.

이번에는 $ HOME 및 $ USER env vars를 설정하여 수정했습니다 (CGI 프로세스에서 기본적으로 설정 해제 됨).


2

구성 파일을 살펴보십시오.

리포지토리> 리포지토리 설정> 구성 파일 편집

[user]섹션이 존재 하는지 확인하십시오 . 사용자 섹션이 없으면 추가하십시오.

예:

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

2

heroku cli 1을 사용합니다. 모든 사용자 이름과 사용자 이메일을 사용해야합니다

$ git config --global user.email .login 이메일.

$ git config --global user.name .heroku 이름.

  1. 자식 풀 [git url]
  2. 자식 초기화
  3. 자식 추가 *

    5 git commit -m "config user.name, user email 후"

  4. git push heroku 마스터


2

Jenkins를 사용하고 릴리스 (git commit이 필요함)를 수행하려고 할 때이 문제가 발생했습니다. 문제를 해결하려면 사용자 정의 사용자 이름 / 이메일 주소를 추가해야했습니다 (그림 참조). 맞춤 사용자 이름 / 이메일 주소이렇게하면 코드를 체크 아웃 할 때 릴리스를 수행 할 때 빌드 사용자 이름 / 이메일 주소를 사용했습니다. 이 구성은 Jenkins Multibranch Pipeline 프로젝트 구성에서 사용 가능합니다.


2

git pull이것을 요구해서는 안됩니다. 그러나 풀이 병합 충돌을 일으키는 경우에는 필요합니다.


2

IMHO,이 오류를 해결하는 올바른 방법은 전역 자식 구성 파일을 구성하는 것입니다.

그렇게하려면 다음 명령을 실행하십시오. 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

일회용 구성의 경우 다음과 같은 것을 사용할 수 있습니다 git config --global user.name 'your_username'

git 구성을 전역 적으로 설정하지 않으면 로컬로 작업하는 모든 git repo마다 설정해야합니다.

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. 자식 초기화
  2. 자식 추가 *
  3. git commit -m "일부 초기화 메시지"

1

일부 파일을 커밋하려고하는 동안이 오류 메시지가 나타났습니다.

간단히 실행 git fetch하고 커밋을 다시 시도 하면 나에게 도움이되었습니다.


0

내가 사용하는 수정 : git config --global user.email "you@example.com"및 작동합니다.

user.mail이 작동하지 않으면 E. Typo를 넣어야합니까?


OP가 이것이 각 업데이트에 실제로 필요한지 알고 싶어한다고 생각합니다.
— tbrk

-5

오타입니다. 실수로 " e " 없이 "user.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.