Git 사용자 설정 마스터하기: 이름, 이메일 및 편집기 기본값
이름, 이메일 및 선호하는 텍스트 편집기를 포함한 필수 Git 사용자 ID를 설정하는 방법을 알아보세요. 이 포괄적인 가이드는 `git config`를 사용한 전역 및 저장소별 설정을 다루며, 커밋이 올바르게 귀속되고 모든 프로젝트에서 일관되게 유지되어 협업 경험을 크게 향상시킵니다.
Git 사용자 설정 마스터하기: 이름, 이메일 및 편집기 기본값
Git 사용자 설정은 처음으로 작업 커밋이 잘못된 이메일 주소로 표시되거나, 회사 기여 그래프에서 변경 사항의 절반이 누락되거나, Git이 종료 방법을 모르는 편집기를 열 때까지는 지루해 보입니다. 해결책은 대개 간단합니다: 이름, 이메일 및 편집기를 의도적으로 설정하고, 하나의 저장소에 대해 이를 재정의하는 방법을 알면 됩니다.
중요한 것은 모든 git config 플래그를 암기하는 것이 아닙니다. Git이 구성을 어디서 읽어오는지, 커밋을 만들기 전에 Git이 사용할 최종 값을 확인하는 방법을 이해하는 것입니다.
Git 구성 수준 이해
Git은 구성 파일의 계층 구조를 사용합니다. 상위 수준에서 정의된 설정은 하위 수준에서 정의된 설정으로 재정의될 수 있습니다. 이러한 수준을 이해하면 설정을 세분화하거나 전역적으로 적용할 수 있습니다.
세 가지 주요 구성 수준이 있습니다:
- 시스템 수준 (
--system): 전체 시스템의 모든 사용자와 모든 저장소에 적용됩니다. 사용자 ID를 관리하는 전용 빌드 서버를 관리하지 않는 한 사용자 ID에 거의 사용되지 않습니다. - 전역 수준 (
--global): 시스템에서 현재 사용자가 소유한 모든 저장소에 적용됩니다. 일반적으로 기본user.name및user.email을 설정하는 곳입니다. - 로컬 수준 (
--local): 현재 작업 중인 특정 저장소에만 적용됩니다. 이를 통해 특정 프로젝트(예: 업무용 vs 개인용)에 대해 다른 ID를 사용할 수 있습니다.
현재 구성 설정 보기
변경을 수행하기 전에 Git이 현재 무엇을 사용하도록 구성되어 있는지 확인하는 것이 좋습니다. 모든 수준 또는 특정 수준의 설정을 나열할 수 있습니다:
# 모든 수준의 모든 설정 보기
git config --list
# 전역 설정만 보기
git config --global --list
사용자 ID 구성 (이름 및 이메일)
이름과 이메일 주소는 Git에 저장된 사용자 정보 중 가장 중요한 부분입니다. 변경을 누가 수행했는지 식별합니다.
1. 전역 사용자 ID 설정
대부분의 사용자에게 이름과 이메일을 전역적으로 설정하는 것이 권장되는 첫 번째 단계입니다. 이렇게 하면 향후 모든 프로젝트가 이 기본 ID를 사용하게 됩니다. 자리 표시자를 실제 정보로 바꾸십시오.
이름 설정:
git config --global user.name "Your Full Name"
이메일 설정:
특히 SSH 키나 커밋 서명을 사용하는 경우 GitHub/GitLab/Bitbucket 계정과 연결된 이메일 주소를 사용하는 것이 좋습니다.
git config --global user.email "[email protected]"
모범 사례: 원격 플랫폼에서 기여가 올바르게 표시되도록 호스팅 제공업체에 연결된 정확한 이메일 주소를 사용하십시오.
2. 특정 저장소에 대한 ID 재정의 (로컬 수준)
때로는 특정 귀속이 필요한 프로젝트(예: 클라이언트 저장소에 업무 이메일 사용)에 기여해야 할 수도 있습니다. 해당 저장소 내에서만 전역 설정을 재정의할 수 있습니다.
저장소 루트 디렉토리로 이동하여 --global 플래그 없이 구성 명령을 실행하십시오:
# 프로젝트 디렉토리로 이동
cd ~/projects/client-project-alpha
# 이 저장소에 대한 특정 이름 설정
git config user.name "Work Name"
# 이 저장소에 대한 특정 이메일 설정
git config user.email "[email protected]"
이 저장소 내에서 커밋하면 Git은 전역 설정 대신 이러한 로컬 설정을 사용합니다.
Git이 ID를 선택하는 방법
Git이 커밋을 처리할 때 로컬 -> 전역 -> 시스템 순서로 수준을 확인합니다. user.name 또는 user.email에 대해 찾은 첫 번째 설정이 사용됩니다.
기본 텍스트 편집기 구성
Git이 입력이 필요할 때(예: 커밋 메시지 작성, 리베이스 지시, 병합 충돌 해결 노트) 구성된 텍스트 편집기를 엽니다. 기본적으로 vi 또는 vim과 같은 기본 터미널 편집기일 수 있으며, 이는 새 사용자에게 어려울 수 있습니다.
전역 편집기 기본 설정
--global 플래그를 사용하여 모든 시스템 또는 프로젝트에서 선호하는 편집기를 사용하도록 Git을 구성할 수 있습니다.
VS Code를 편집기로 사용
Visual Studio Code를 선호하고 명령줄 통합(code)이 설치된 경우 다음과 같이 설정하십시오:
git config --global core.editor "code --wait"
--wait 플래그는 중요합니다. Git이 VS Code에서 열린 파일을 닫을 때까지 실행을 일시 중지하여 커밋 메시지가 완료되도록 합니다.
Sublime Text를 편집기로 사용
Sublime Text 사용자의 경우:
git config --global core.editor "subl -n -w"
Nano 또는 Vim 사용 (이미 익숙한 경우)
간단한 터미널 편집기를 선호하는 경우:
# Nano의 경우
git config --global core.editor "nano"
# Vim의 경우 (종종 기본값)
git config --global core.editor "vim"
편집기 구성 테스트
편집기 구성이 작동하는지 테스트하는 가장 쉬운 방법은 메시지가 필요한 수정을 시작하거나 -m 플래그 없이 커밋을 만드는 것입니다:
# 더미 파일 생성 및 -m 없이 커밋 시도
touch tempfile.txt
git add tempfile.txt
git commit
# 이 명령은 새로 구성된 편집기를 열어야 합니다.
기존 잘못된 ID 수정
user.name 및 user.email을 변경하면 향후 커밋에 영향을 미칩니다. 이미 존재하는 커밋을 다시 쓰지는 않습니다. 마지막 커밋에 잘못된 작성자가 있고 아직 푸시하지 않은 경우 구성을 수정한 후 수정할 수 있습니다:
git config user.name "Correct Name"
git config user.email "[email protected]"
git commit --amend --reset-author
잘못된 커밋이 이미 공유 브랜치에 푸시된 경우 주의하십시오. 게시된 기록을 다시 쓰면 다른 사람에게 혼란을 줄 수 있습니다. 개인 브랜치의 경우 수정 및 강제 푸시가 허용될 수 있습니다:
git push --force-with-lease
공유 브랜치의 경우 기록을 그대로 두고 향후 커밋에 대해 ID를 수정하는 것이 더 안전한 방법입니다. 많은 커밋을 수정해야 하는 경우 팀과 협의한 후에만 기록 재작성 도구를 사용하십시오.
값의 출처 확인
Git이 이상하게 작동할 때 git config --list는 너무 시끄러울 수 있습니다. --show-origin을 사용하여 Git이 각 값을 제공한 파일을 알려주도록 하십시오:
git config --show-origin --list
다음과 같은 출력이 표시될 수 있습니다:
file:/Users/alex/.gitconfig [email protected]
file:.git/config [email protected]
이는 현재 저장소에서 저장소-로컬 값이 우선한다는 의미입니다. 이것은 "전역 이메일을 변경했지만 Git이 여전히 이전 것을 사용합니다" 문제를 진단하는 가장 빠른 방법입니다.
하나의 값만 요청할 수도 있습니다:
git config --show-origin user.email
지속 가능한 업무 및 개인 설정
일반적인 패턴은 개인 전역 ID를 유지하고 업무 저장소에서 로컬로 재정의하는 것입니다:
git config --global user.name "Alex Rivera"
git config --global user.email "[email protected]"
cd ~/work/payments-api
git config user.email "[email protected]"
일부 팀은 별도의 디렉토리 아래에 별도의 클론을 선호합니다. 최신 Git 버전은 조건부 포함을 지원하여 경로 아래의 저장소에 대해 업무 구성을 자동으로 로드할 수 있습니다:
# ~/.gitconfig
[user]
name = Alex Rivera
email = [email protected]
[includeIf "gitdir:~/work/"]
path = ~/.gitconfig-work
# ~/.gitconfig-work
[user]
email = [email protected]
정확한 경로 일치 규칙은 플랫폼에 따라 약간 놀라울 수 있으므로 실제 저장소 내에서 테스트하십시오:
cd ~/work/some-repo
git config --show-origin user.email
피할 수 있는 편집기 문제
core.editor 설정은 Git이 메시지나 지시 파일이 필요할 때 주로 중요합니다: 병합 커밋, 대화형 리베이스, 커밋 수정 및 -m 없는 커밋. Git이 Vim을 열고 편안하지 않으면 명령이 멈춘 것처럼 느껴질 수 있습니다.
VS Code의 경우 --wait 플래그는 선택 사항이 아닙니다:
git config --global core.editor "code --wait"
--wait 없이 Git은 파일을 열고 메시지 작성을 마치기 전에 즉시 계속 진행할 수 있습니다. 터미널 전용 서버의 경우 nano가 덜 놀라운 경우가 많습니다:
git config --global core.editor "nano"
실제 프로젝트 변경 없이 편집기를 테스트할 수 있습니다:
git commit --allow-empty
테스트 메시지를 작성하고 저장한 후 원하지 않으면 빈 커밋을 삭제하십시오:
git reset --soft HEAD~1
커밋 서명 및 호스팅 계정
Git 이메일은 인증과 별개입니다. SSH 키, 개인 액세스 토큰 및 브라우저 로그인이 푸시 가능 여부를 결정합니다. user.email은 커밋 객체에 기록될 작성자 이메일을 결정합니다.
호스팅 제공업체는 일반적으로 이메일 주소로 커밋을 계정에 매핑합니다. 개인정보 보호 이메일을 사용하는 경우 해당 정확한 주소를 설정하십시오:
git config --global user.email "[email protected]"
조직에서 서명된 커밋을 요구하는 경우 ID는 설정의 일부일 뿐입니다. user.signingkey, commit.gpgsign 또는 SSH 서명 구성도 필요할 수 있습니다. 기본 이름/이메일 설정과 별도로 유지하여 한 번에 한 계층씩 디버그할 수 있습니다.
작성자, 커미터 및 환경 재정의
Git은 각 커밋에 작성자와 커미터를 모두 저장합니다. 대부분의 경우 동일한 사람입니다. 다른 개발자의 패치를 적용하거나, 커밋을 리베이스하거나, 원래 다른 사람이 작성한 커밋을 수정할 때 다릅니다.
다음 명령으로 두 필드를 모두 볼 수 있습니다:
git log --format=fuller -1
이 출력은 누군가 "Git이 잘못된 이메일을 사용했습니다"라고 말하지만 일반 한 줄 로그에는 작성자만 표시될 때 유용합니다. 유지 관리자가 패치를 적용했거나 리베이스가 커밋을 다시 생성했기 때문에 커미터가 다를 수 있습니다.
Git은 환경 변수에서 ID를 읽을 수도 있습니다:
GIT_AUTHOR_NAME="Build Bot" \
GIT_AUTHOR_EMAIL="[email protected]" \
git commit -m "Update generated files"
CI 시스템은 때때로 이 패턴을 사용합니다. 의도적일 때는 괜찮지만 파이프라인이 이러한 변수를 개발자 셸이나 로컬 스크립트로 누출할 때 혼란스럽습니다. Git이 구성을 무시하는 경우 환경을 확인하십시오:
env | rg '^GIT_(AUTHOR|COMMITTER)'
커밋하기 전에 우발적인 재정의를 해제하십시오:
unset GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL GIT_COMMITTER_NAME GIT_COMMITTER_EMAIL
지저분한 기록을 방지하는 작은 팀 정책
팀의 경우 최상의 Git 사용자 구성 정책은 일반적으로 간단합니다:
- 실제 이름이나 팀이 인식하는 동일한 핸들을 사용하십시오.
- 회사 저장소에는 회사 이메일을 사용하십시오.
- 커밋이 올바른 계정에 연결되도록 확인된 호스팅 제공업체 이메일을 사용하십시오.
- 팀이 동의하지 않는 한 이전 작성자 메타데이터를 정리하기 위해 공유 기록을 다시 쓰지 마십시오.
- 온보딩 스크립트가 이에 의존하는 경우에만 선호하는
core.editor를 문서화하십시오.
이메일 도메인에 대한 사전 커밋 또는 사전 푸시 검사를 추가할 수 있지만 친근하게 유지하십시오. 다른 시스템에서 페어링하는 사람 때문에 모든 커밋을 차단하는 로컬 훅은 마찰을 일으킵니다. 서버 측 정책이나 보호된 브랜치의 CI 검사가 일반적으로 관리하기 쉽습니다.
작업 코드를 푸시하기 전에 수동으로 실행할 수 있는 간단한 로컬 검사는 다음과 같습니다:
git config user.email
git log --format='%h %ae %s' origin/main..HEAD
회사 브랜치에서 개인 이메일을 보여주는 커밋이 있으면 풀 리퀘스트를 열기 전에 수정하십시오. 나중에 병합된 브랜치를 수리하는 것보다 훨씬 쉽습니다.
일반적인 구성 문제 해결
git config --global user.email이 올바른 값을 표시하지만 커밋이 여전히 다른 것을 사용하는 경우 로컬 재정의가 있는 저장소 내에 있는지 확인하십시오:
git config --local user.email
git config --show-origin user.email
로컬 값이 잘못된 경우 교체하거나 설정을 해제하십시오:
git config user.email "[email protected]"
git config --unset user.email
로컬 값을 설정 해제하면 Git이 다시 전역 값으로 대체됩니다. 모든 저장소에서 동일한 값을 설정하는 것보다 더 깔끔한 경우가 많습니다.
Git이 Author identity unknown이라고 말하면 Git이 구성 또는 환경에서 사용 가능한 user.name 및 user.email을 찾을 수 없음을 의미합니다. 하나만이 아니라 둘 다 설정하십시오:
git config --global user.name "Alex Rivera"
git config --global user.email "[email protected]"
공유 서버에서는 모든 사람을 위해 시스템을 관리하지 않는 한 --system을 피하십시오. 시스템 수준 ID는 관련 없는 사용자가 실수로 동일한 사람으로 커밋하게 할 수 있습니다. 빌드 에이전트가 주요 예외이며, 그 경우에도 CI 작업 공간이나 서비스 계정을 명시적으로 구성하는 것이 일반적으로 더 좋습니다.
빠른 체크리스트
- 기본 ID 및 편집기와 같이 모든 곳에 적용되는 설정에는
git config --global을 사용하십시오. - 저장소 내에서
git config(플래그 없음)를 사용하여 전역 설정을 로컬로 재정의하십시오. - 어떤 파일이 우선하는지 알아야 할 때
git config --show-origin --list를 사용하십시오. - 가장 최근 커밋을 다시 쓰는 것이 적절할 때만
git commit --amend --reset-author를 사용하십시오. - 그래픽 편집기를 구성할 때
--wait를 사용하여 Git이 편집을 마칠 때까지 기다리도록 하십시오.