프로젝트마다 다른 Git 구성을 가질 수 있습니까? 이메일)를 위해 일합니다. 체크인에 이름 / 이메일이

.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만하면 해당 전자 메일을 사용하도록 구성됩니다.