Git config --local 설정 - Git config --local seoljeong

Git config --local 설정 - Git config --local seoljeong

Git의 설치까지 모두 마쳤다면, 이제 본격적으로 Git을 사용하기 전에 몇가지 설정을 해야만 합니다.

1. 작업하는 사람(author)의 이름과 이메일주소 등록

2. local repository 생성

3. remote repository 연결

전혀 어려울것이 없으니 천천히 따라오시면 됩니다. 어려운게 아니라 낯설 뿐 입니다.

Git Author

우리는 local repository에서 소스코드를 작성하고 Git을 이용해서 관리하거나 remote repository로 전송할 예정입니다. 그렇다면, 작성자가 누구인지, 소스코드를 다른 곳으로 전송하는 사람이 누구인지 등록해야 합니다. 이러한 작업자를 git author라고 합니다.

git config --global user 설정

git author의 정보는 name(이름)과 email(이메일) 두가지 입니다.

  • git config --global user.name "user_name"
  • git config --global user.emial ""
🛠global 설정과 Local 설정
--global 옵션은 사용중인 컴퓨터의 전체(global)에 대한 설정을 하겠다는 의미입니다. 한 컴퓨터에서 여러개의 repository가 존재할 수 있죠. 각 repo에서 author가 달라야한다면, 해당 작업폴더에서 git config user.name "user_name" 등으로 명령 실행하시면 됩니다.
Git config --local 설정 - Git config --local seoljeong

예시로 user의 이름은 John Doe, 이메일은 로 등록했습니다.

git config user 설정 확인

Git config --local 설정 - Git config --local seoljeong

등록확인은 git config --list 명령을 통해서 확인할 수 있습니다.

git config user 를 통해 local 유저 설정

대부분의 경우 global설정을 통해서 일괄되게 작업하기때문에 local author를 설정할 일은 없을겁니다. 아래의 정보는 그저 추가정보 정도로만 훑고 지나가시길 바랍니다. 

Git config --local 설정 - Git config --local seoljeong

이번엔 git config user "user_name" 명령으로 local repo에서 사용할 author을 설정해보았습니다.
이를 git config --list로 확인해보면 다음과 같습니다.

Git config --local 설정 - Git config --local seoljeong
local repository A의 git config --list 결과

위의 리스트에서 두개의 user.name, user.email이 보입니다.

상단에 위치한것이 global로 설정되어 있는 것이며, 하단의 정보는 해당 local repo에 설정되어 있는 겁니다.

Git config --local 설정 - Git config --local seoljeong
local repository B의 git config --list 결과

다른 local repository에서 확인해보면 global로 설정되어있는 author만 확인됩니다.

이렇게 author를 global, local 따로 설정할 수 있습니다.

git config 설정 (계정 설정하기)

  • Git을 설치하고 나면 Git 의 사용 환경을 적절하게 설정해주어야만 합니다.
  • 한번만 설정하면 설정한 내용은 git을 업그레이드해도 유지됩니다.
  • 언제든지 명령어를 이용하여 설정을 변경할 수 있습니다.

git 설정 파일

  • /etc/gitconfig 파일: 시스템의 모든 사용자와 모든 저장소에 적용되는 설정입니다. 이 파일을 읽고 쓰고 싶으면 git config --system 옵션을 사용합니다.
  • ~/.gitconfig 파일: 특정 사용자에게만 적용되는 설정입니다. 이 파일을 읽고 쓰고 싶으면 git config --global 옵션을 사용합니다.
  • .git /config: 이 파일은 Git 디렉토리에 있고 특정 저장소(혹은 현재 작업 중인 프로젝트)에만 적용됩니다.

계정 설정

$ git config --global user.name "이름"
$ git config --global user.email "이메일"
  • 프로젝트 하나에서만 변경하고 싶으면
$ git config --local user.name "이름"
$ git config --local user.email "이메일"

설정 확인

  • git config --list 명령을 실행하면 설정한 모든 것을 보여줍니다.
    $ git config --list
    user.name=yunyoung1819
    user.email=
    color.status=auto
    color.branch=auto
    color.interactive=auto
    color.diff=auto

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

  • 관련 글: 운영체제 별 Git 설치 방법 총 정리

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

  • 로컬에서 기본값으로 사용할 Git 사용자 이름과 이메일 설정(global 옵션)
  • 저장소 별로 Git 사용자와 이메일 정보 설정하기
  • 현재 저장소의 user, email 설정값을 확인하는 방법
  • Git 사용자 이름과 이메일 정보 삭제하기
  • Git 저장소의 커밋 정보와 GitHub 사용자가 연결되는 원리
  • 심화 주제: GPG 인증

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

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

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

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

$ cat ~/.gitconfig
[user]
    name = Your Name
    email = 

이제 로컬 시스템에서 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 <>
Date:   Sat May 15 17:14:44 2021 +0900

    Initiazile repsitory

.....

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

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

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

$ git config user.name "LainyZine"
$ git config user.email 

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

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

    Add README.md

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

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

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

$ git config user.name
LainyZine

$ git config user.email

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

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

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

  • 관련 글: Git 저장소 별로 따라 사용자 이름과 이메일 다르게 설정하는 방법

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

  • 관련 글: 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 사용자와 매칭하는 것이 가능합니다.

Git config --local 설정 - Git config --local seoljeong

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

Git config --local 설정 - Git config --local seoljeong

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

심화 주제: GPG 인증

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

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

Git config --local 설정 - Git config --local seoljeong

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

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

  • Managing commit signature verification - GitHub Docs
  • GPG(GNU PG)를 이용해 git 커밋에 서명하는 방법 | 44BITS