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


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.