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'

커밋 명령에 대한 GIT 매뉴얼 페이지에서

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

--author 옵션의 경우.

이 형식은 어디에 정의되어 있습니까? A와 U는 무엇을 의미합니까? 사용자 이름 만 또는 이메일 만있는 다른 사용자를 어떻게 커밋합니까?


3
AU 는 어떤 것도 대표하지 않으며 단지 예일뿐입니다 : AU Thor => AUThor => Author . 이름으로 원하는 것을 지정할 수 있습니다.
Samy Dindane 2012-07-20

1
나는 AU Thor가 Author를 형성한다는 것을 알고 있으며, 분리에 어떤 의미가 있는지 궁금합니다.
Willem D' Haeseleer

답변:


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

2
사용하려는 경우 "name <>", 그리고 git commit --amend후에는 실패합니다 invalid ident오류; 그래서 그냥하지 않습니다
삼매 관청

7
분명히 해당 옵션을 사용할 때에도 여전히 git 구성에 user.email 및 user.name을 설정해야합니다. 그렇지 않으면 git이 불평합니다.
qwertzguy

51

구체적인 형식은 다음과 같습니다.

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

1
John Doe의 이름을 입력하면 왜 암호가 필요하지 않습니까?
Narek

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 "Your 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 2012-07-20

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
Martin

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 등을 통해 pull 요청을 수행하는 경우 로그인 한 사람이 될 것입니다.


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을 초기화하지 않았을 때 작동합니다.
Andy

-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.