오류로 인해 커밋이 실패했습니다.
Committer identity unknown
*** Please tell me who you are.
Run
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
to set your account's default identity.
Omit --global to set the identity only in this repository.
fatal: unable to auto-detect email address
◆ 에러원인
Git 커밋(Commit) 시에 "Committer identity unknown" 오류가 발생했다.
이 오류는 Git이 커밋 작성자 정보(이름/이메일)를 알 수 없어서 발생하는 기본적인 설정 문제로써
Git이 “누가 커밋했는가”를 기록해야 하는데, 현재 사용자 정보를 찾지 못하고 있는 상황이기 때문에 발생하게 된다.
즉, 로컬 PC에 Git 작성자 정보(user.name, user.email)가 등록되어 있지 않거나, 등록되어 있어도 현재 리포지토리에만 설정돼 있지 않은 경우에 발생한다고 이해하면 된다.
◆ 해결방법
오류 메시지를 보면 해결방법이 같이 나와있는데
"git config --global user.email", "git config --global user.name" 명령어를 실행해서 Git 작성자 정보(user.name, user.email)를 등록해야 하고, 그 이후에는 커밋을 진행할 때 해당 오류메시지가 나오지 않게 된다.
1. Git에 등록된 작성자 정보(user.name, user.email) 확인
$ git config --list
"git config --list" 명령어는 Git의 모든 설정값을 현재 적용된 순서대로 보여주는 명령어인데, 명령어를 실행하게 되면 Git 작성자 정보가 현재 등록돼 있는지에 대한 여부도 확인할 수 있다.
만약 아래와 같은 작성자 정보가 보이지 않으면 현재 Git 작성자 정보가 등록되지 않은 상태라고 이해하면 된다.
user.name=작성자 이름
user.email=작성자 이메일
2. Git 작성자 정보(user.name, user.email) 등록
작성자 정보가 등록돼 있지 않다면 git config user.name, git config user.email 명령어를 통해 등록을 해야 하는데,
등록 시, --global 설정에 따라 Git의 모든 저장소에 적용할 것인지 현재 저장소만 적용할 것인지에 대한 여부가 설정된다.
# 전역 설정 (모든 저장소에 적용)
$ git config --global user.name "작성자 이름"
$ git config --global user.email "작성자 이메일"
# 특정 리포지토리에서만 설정 (현재 리포지토리 에만 적용)
$ git config user.name "작성자 이름"
$ git config user.email "작성자 이메일"
※만약 기존에 등록된 user.name과 user.email이 존재하는데 명령어를 실행시키면 새로 등록한 작성자 정보로 덮어씌운다.
3. 등록된 작성자 정보 확인 (user.name, user.email)
상기 1번에서의 "git config --list" 명령어를 통해 다시 한번 설정값을 확인해 보면 내가 등록한 user.name과 user.email 정보가 출력될 것이다.
◆ 등록한 작성자 정보(user.name, user.email) 도대체 어디서 사용되나?
등록한 작성자의 이름(user.name)과 이메일(user.email)은 아래와 같은 곳에서 사용된다.
user.name ⇒ 단순히 커밋하는 작성자의 이름으로써, 커밋 메시지에 표시된다. (Git 내부적으로는 단순 문자열에 불과하기 때문에 진짜 계정 이름일 필요는 없다.)
user.email ⇒ user.name과 같이 커밋 메시지에 표시된다. (GitHub의 UI에서는 기본적으로 숨겨져 있어 표시되지 않는다.)
또한 GitHub의 경우는 계정 식별자의 역할도 하는데, 내가 설정한 user.email의 이메일 주소가 GitHub계정 이메일 주소와 같다면 커밋이 GitHub의 계정과 연결된다.
예시를 위해 아래와 같이 임의의 작성자 이름과, 이메일로 설정한 뒤 커밋한 뒤, GitHub의 계정과 일치하는 이메일로 작성자 이메일을 설정하여 한 번 더 커밋을 해보겠다.
# 임의의 작성자 이름/이메일로 설정
$ git config user.name "Tester"
$ git config user.email "tester@abc.com"
# GitHub 계정과 동일한 이메일로 설정
$ git config user.email "GitHub계정 이메일"
GitHub에서 커밋 이력을 살펴보면 첫 번째 커밋의 경우, 임의의 작성자 이름과 이메일로 등록했기 때문에 커밋이 GitHub와 계정연결 되지 않은 상태로 작성자 이름인 "Tester"만 이력에 출력되는 것을 확인할 수 있다.
그다음 두 번째 커밋은 GitHub의 계정과 매핑이 되어, 이력에 등록한 작성자의 이름이 아닌 GitHub에서 등록한 계정명으로 치환되어 표시되며, 또한 계정명 앞에 초록색 프로필이 추가로 표시되는 것을 확인할 수 있다.

다만, 이것은 GitHub UI에서만 작성자 이름을 GitHub 계정명으로 치환해서 보여주고 있을 뿐, 실제 커밋 데이터 자체는 등록한 작성자 이름("Tester")이 그대로 남아있게 된다.


◆ 이메일을 숨기고 싶은 경우
커밋할 때 실제 이메일을 공개하고 싶지 않은 경우에는 아래와 같은 순서로 설정하여 숨길 수 있다.
1. GitHub 우측상단의 프로필 아이콘 클릭 ⇒ [Settings] 클릭

2. [Emails] ⇒ [Keep my email addresses private]를 [On]으로 설정

3. Keep my email addresses private에 생성된 이메일을 Git 작성자 이메일(user.email)로 설정


이렇게 하면 로그에는 실제 GitHub 계정 이메일은 공개되지 않고, GitHub 프로필에 커밋이 정상적으로 연결되어 이력이 출력된다.


글 내용 중 잘못된 부분이 있거나, 첨부하실 내용이 있으시면 댓글로 남겨주세요. 공부하는데 많은 도움이 됩니다.
-- 기억의 유효기간은 생각보다 짧다. --
'형상 관리 > Git' 카테고리의 다른 글
| [Git] 특정 브랜치만 가져오기(clone) (0) | 2025.06.18 |
|---|---|
| [Git] git pull 충돌, Your local changes to the following files would be overwritten by merge 에러 해결법 (0) | 2025.05.14 |
| [Git] Unable to access: SSL certificate has expired 에러 해결법 (0) | 2024.07.15 |