LainyZine: 프로그래머 가이드 🐣

Git 최초 설정: 사용자 이름과 이메일 설정하는 방법

Git과 같은 버전 관리 도구는 여러 사람이 함께 협업하는 것을 전제로 하고 있습니다. 따라서 저장소에 변경 사항을 추가하는 Commit 작업을 할 때 누구의 작업인지를 기록하는 것이 매우 중요합니다. Git에서는 커밋을 할 때 사용할 이름과 이메일을 지정할 수 있으며, 이 때 커밋에 기록된 이메일은 GitHub의 사용자를 연결할 때도 사용됩니다. Git을 사용한다면 설치 후 꼭 미리 설정해두기를 권장합니다.

이 글에서는 Git 저장소에 커밋할 때 남길 사용자 이름과 이메일을 설정하는 방법을 소개합니다.

로컬에서 기본값으로 사용할 Git 사용자 이름과 이메일 설정(global 옵션)

현재 시스템의 모든 Git 작업에 사용할 사용자 이름(user.name)과 이메일을 설정하고자 한다면, global옵션을 사용해 git config 명령어를 실행해줍니다.

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

이 명령어를 실행하면, ~/.gitconfig 에 다음 내용을 추가해줍니다.

$ cat ~/.gitconfig
[user]
    name = Your Name
    email = you@example.com

이제 로컬 시스템에서 Git 커밋을 하면 항상 이 정보가 기본적으로 사용됩니다. 간단한 예제로 확인해봅니다.

$ mkdir git-user-1
$ cd git-user
$ git init
Initialized empty Git repository in /tmp/git-user-1/.git/
$ touch .gitignore
$ git add .
$ git commit -m'Initiazile repsitory'
[master (root-commit) 7c4f2a2] Initiazile repsitory
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 .gitignore

git show 명령어로 커밋 정보를 출력합니다.

$ git show 7c4f2a2
commit 7c4f2a27ac78f24fe65a2aa906e7c552e97d5c84
Author: Your Name <you@example.com>
Date:   Sat May 15 17:14:44 2021 +0900

    Initiazile repsitory

.....

Author가 Your Name <you@example.com>으로 기록된 것을 확인할 수 있습니다.

저장소 별로 Git 사용자와 이메일 정보 설정하기

저장소 디렉터리에서 --global 없이 git config를 사용하면 해당 디렉터리(저장소) 전용 설정을 추가할 수 있습니다.

$ git config user.name "LainyZine"
$ git config user.email lainyzine.com@gmail.com

이 설정은 저장소 별로 저장되며 global 옵션으로 설정한 정보보다 우선적으로 사용됩니다.

$ touch README.md
$ git add .
$ git commit -m'Add README.md'
$ git show 54ae508
commit 54ae5080f7928c8ab7a70e757e674a62f66c923a
Author: LainyZine <lainyzine.com@gmail.com>
Date:   Sat May 15 17:21:36 2021 +0900

    Add README.md

저장소에 셋업한대로 Author 값이 LainyZine <lainyzine.com@gmail.com>으로 기록된 것을 확인할 수 있습니다.

현재 저장소의 user, email 설정값을 확인하는 방법

앞의 예제에서는 실제로 커밋을 하고, 커밋 작성자 값을 확인해보았습니다. git config를 사용하면 커밋이 만들어질 때 적용될 사용자 이름과 이메일을 미리 확인해볼 수 있습니다.

$ git config user.name
LainyZine

$ git config user.email
lainyzine.com@gmail.com

다른 Git 저장소를 생성해서 다시 확인해봅니다.

$ mkdir -p /tmp/git-user-2
$ cd /tmp/git-user-2
$ git init
$ git config user.name
Your Name
$ git config user.email
you@example.com

이 저장소에는 로컬 설정이 사용되지 않아서, 이번에는 전역에 설정해둔 값이 사용되는 것을 확인할 수 있습니다. 저장소 별로 사용자 이름과 이메일을 다르게 설정하는 방법에 대해서는 다음 글에서 더 자세히 소개합니다.

더 나아가 GitHub을 사용하고 여러 개의 계정을 상시적으로 사용하는 경우 관련된 설정들을 추가로 해야합니다. 이에 관한 Git 설정에 대해서는 다음 글에서 소개합니다.

Git 사용자 이름과 이메일 정보 삭제하기

사용자 이름과 이메일 설정은 다음 명령어로 삭제할 수 있습니다.

# 전역 설정을 삭제
$ git config --global --unset user.name
$ git config --global --unset user.email

# 개별 저장소의 설정을 삭제
$ git config --unset user.name
$ git config --unset user.email

Git 저장소의 커밋 정보와 GitHub 사용자가 연결되는 원리

GitHub에서는 Git 커밋의 이메일 정보를 사용해 GitHub 사용자를 매칭합니다. GitHub 하나의 계정에는 Primary 메일을 비롯해 추가 이메일을 등록할 수 있습니다. 고유한 이메일 주소는 오직 하나의 계정에만 등록될 수 있기 때문에 이메일 주소로 GitHub 사용자와 매칭하는 것이 가능합니다.

GitHub 계정에는 여러 개의 이메일을 연결할 수 있습니다

따라서 GitHub에 등록된 이메일을 user.email에 설정하고 커밋한 다음 GitHub 저장소에 Push하면 해당 이메일을 사용하는 GitHub 사용자로 자동으로 연결됩니다.

커밋의 작성자가 GitHub 사용자와 자동으로 연결됩니다

단, user.email 설정 자체는 그냥 텍스트 값이고, 이 사용자가 누구인지를 증명하는 로직은 가지고 있지 않습니다.

심화 주제: GPG 인증

로컬에서 user.email을 설정하는 것은 커밋의 작성자가 누구인지를 보장하지 않습니다. 이 값을 다른 사용자의 이메일로 변경하고 커밋하면 GitHub에서는 다른 사람 프로필을 연결해버립니다. 이러한 문제를 방지하고 작성자 본인임을 증명하기 위해서 추가적으로 GPG 인증을 사용할 수 있습니다. 이렇게 추가 인증을 하는경우 GitHub의 커밋 정보에서 Verified 마크를 확인할 수 있습니다.

다음은 microsoft/TypeScirpt 저장소에서 가져와본 Verified 커밋의 예입니다.

microsoft/TypeScript 저장소의 verified 커밋

거꾸로 말하면 Verified가 없는 커밋은 어떠한 경우에도 작성자를 보증할 수 없습니다.

GPG 인증은 이 글의 범위를 넘어서는 주제라서, 관심이 있다면 다음 글들을 참고해주세요.

LainyZine은 쿠팡 파트너스 활동에 따른 수수료를 제공받습니다.