반응형
Git 설정: 시스템, 글로벌, 로컬의 차이
Git에서는 설정 파일을 세 가지 레벨(시스템, 글로벌, 로컬)로 관리합니다. 각 레벨은 설정이 적용되는 범위가 다릅니다.
1. 시스템 설정 (System)
- 적용 범위: 컴퓨터에 있는 모든 사용자와 모든 저장소에 적용됨
- 설정 파일 위치:
- Windows: C:\Program Files\Git\etc\gitconfig
- Linux/macOS: /etc/gitconfig
- 확인 방법:
git config --system --list
- 변경 방법:
git config --system user.name "공용 사용자명" git config --system user.email "공용 이메일"
- 특징:
- 시스템 전체에 영향을 미침.
- 모든 사용자와 모든 저장소가 이 설정을 기본값으로 사용.
- 일반적으로 관리자 권한이 필요하여 변경이 번거로움.
2. 글로벌 설정 (Global)
- 적용 범위: 현재 사용자에게만 적용되며, 사용자가 관리하는 모든 저장소에 공통 적용됨
- 설정 파일 위치:
- Windows: C:\Users\사용자이름\.gitconfig
- Linux/macOS: ~/.gitconfig
- 확인 방법:
git config --global --list
- 변경 방법:
git config --global user.name "개인 사용자명" git config --global user.email "개인 이메일"
- 특징:
- 특정 사용자 계정에만 적용.
- 사용자가 작업하는 모든 Git 저장소에서 기본적으로 적용됨.
- 시스템 설정보다 우선순위가 높음.
3. 로컬 설정 (Local)
- 적용 범위: 특정 Git 저장소(프로젝트)에서만 적용됨
- 설정 파일 위치:
- 프로젝트 내 .git/config (각 프로젝트마다 개별 존재)
- 확인 방법:
git config --local --list
- 변경 방법:
git config --local user.name "프로젝트별 사용자명" git config --local user.email "프로젝트별 이메일"
- 특징:
- 특정 프로젝트에서만 설정이 적용됨.
- 같은 사용자라도 프로젝트마다 다른 설정을 사용할 수 있음.
- 로컬 설정이 글로벌/시스템 설정보다 우선됨.
설정 적용 우선순위
Git은 설정을 적용할 때 로컬 > 글로벌 > 시스템 순서로 우선 적용합니다.
설정 레벨 적용 범위 우선순위
로컬(Local) | 특정 Git 프로젝트 | 1 (최우선) |
글로벌(Global) | 현재 사용자 계정의 모든 Git 프로젝트 | 2 |
시스템(System) | 컴퓨터의 모든 사용자와 모든 프로젝트 | 3 (가장 낮음) |
예를 들어:
- 특정 프로젝트에서 git config --local user.name "프로젝트 사용자"를 설정했다면, 이 프로젝트에서는 글로벌/시스템 설정보다 이 값이 적용됨.
- 로컬 설정이 없을 경우, 글로벌 설정이 사용됨.
- 글로벌 설정이 없으면, 시스템 설정이 기본값으로 사용됨.
실제 활용 예시
1) 모든 프로젝트에서 같은 사용자 이름과 이메일을 사용하려면?
git config --global user.name "홍길동"
git config --global user.email "hong@example.com"
→ 모든 프로젝트에서 기본적으로 이 설정을 사용함.
2) 특정 프로젝트에서만 다른 이름과 이메일을 사용하려면?
cd /path/to/project
git config --local user.name "프로젝트별 이름"
git config --local user.email "project@example.com"
→ 해당 프로젝트에서만 설정이 적용됨.
3) 시스템 전체에서 기본값을 설정하려면?
git config --system core.editor "vim"
→ 모든 사용자와 모든 Git 저장소에서 기본 편집기를 vim으로 설정함.
결론
- 시스템 설정: 컴퓨터 전체에 적용 (거의 사용하지 않음).
- 글로벌 설정: 특정 사용자에게 적용 (일반적으로 사용됨).
- 로컬 설정: 특정 프로젝트에만 적용 (우선순위 가장 높음).
보통 글로벌 설정을 기본으로 사용하고, 특정 프로젝트에서만 로컬 설정을 추가하는 방식이 일반적입니다.