.gitconfig
일반적으로 user.home
디렉토리에 저장됩니다 .
나는 다른 정체성을 사용하여 회사 A와 회사 B를위한 프로젝트 (주로 이름 / 이메일)를 위해 일합니다. 체크인에 이름 / 이메일이 포함되지 않도록 두 가지 다른 Git 구성을 어떻게 가질 수 있습니까?
답변
.git/config
저장소의 특정 복제본의 파일은 해당 복제에 대해 로컬입니다. 배치 된 모든 설정은 해당 특정 프로젝트의 작업에만 영향을줍니다.
(기본적으로, git config
수정은 .git/config
하지 ~/.gitconfig
-에서만 --global
수행이 후자를 수정합니다.)
답변
git config에는 3 가지 레벨이 있습니다; 프로젝트, 글로벌 및 시스템.
- 계획 : 프로젝트 설정은 현재 프로젝트에서만 사용 가능하며 프로젝트 디렉토리의 .git / config에 저장됩니다.
- global : 전역 설정은 현재 사용자의 모든 프로젝트에서 사용 가능하며 ~ / .gitconfig에 저장됩니다.
- system : 시스템 설정은 모든 사용자 / 프로젝트에서 사용 가능하며 / etc / gitconfig에 저장됩니다.
프로젝트 특정 구성을 작성하려면 프로젝트 디렉토리에서이를 실행해야합니다.
$ git config user.name "John Doe"
전역 구성을 작성하십시오.
$ git config --global user.name "John Doe"
시스템 구성을 작성하십시오.
$ git config --system user.name "John Doe"
그리고 짐작할 수 있듯이 프로젝트는 전역 및 전역 재정의 시스템을 재정의합니다.
답변
git 버전 2.13부터 git은 조건부 구성 include를 지원합니다 . 이 예에서는 회사 A의 저장소를 ~/company_a
디렉토리에 복제 하고 회사 B의 저장소를~/company_b
합니다.
당신의에서 .gitconfig
이 같은 것을 넣을 수 있습니다.
[includeIf "gitdir:~/company_a/"]
path = .gitconfig-company_a
[includeIf "gitdir:~/company_b/"]
path = .gitconfig-company_b
.gitconfig-company_a의 내용 예
[user]
name = John Smith
email = john.smith@companya.net
.gitconfig-company_b의 내용 예
[user]
name = John Smith
email = js@companyb.com
답변
감사합니다 @ crea1
작은 변형 :
https://git-scm.com/docs/git-config#_includes에 작성되어 있습니다 .
패턴이로 끝나는 경우
/
,**
자동으로 추가됩니다. 예를 들어 패턴foo/
이됩니다foo/**
. 다시 말해, 그것은foo
재귀 적으로 일치 하고 내부의 모든 것입니다.
그래서 내 경우에는
~ / .gitconfig 사용합니다 .
[user] # as default, personal needs
email = myalias@personal-domain.fr
name = bcag2
[includeIf "gitdir:~/workspace/"] # job needs, like workspace/* so all included projects
path = .gitconfig-job
# all others section: core, alias, log…
따라서 프로젝트 디렉토리가 my 인 ~/wokspace/
경우 기본 사용자 설정은
~ / .gitconfig-w로 바뀝니다 .
[user]
name = John Smith
email = js@company.com
답변
명시 적으로 현재 저장소 구성 파일--local
을 사용 하는 데 사용할 수도 있습니다 .
git config --local user.name "John Doe"
답변
환경 변수 가 사용해야 GIT_CONFIG
하는 파일을 가리킬 수도 git config
있습니다. 으로 GIT_CONFIG=~/.gitconfig-A git config key value
지정된 파일이 조작됩니다.
답변
다음과 같은 방법으로 내 이메일을 위해이 작업을 수행하고 있습니다.
git config --global alias.hobbyprofile 'config user.email "me@example.com"'
그런 다음 새 작업 프로젝트를 복제 할 때 실행 git hobbyprofile
만하면 해당 전자 메일을 사용하도록 구성됩니다.