답변:
git config에는 3 가지 레벨이 있습니다; 프로젝트, 글로벌 및 시스템.
프로젝트 특정 구성을 작성하려면 프로젝트 디렉토리에서이를 실행해야합니다.
$ git config user.name "John Doe"
전역 구성을 작성하십시오.
$ git config --global user.name "John Doe"
시스템 구성을 작성하십시오.
$ git config --system user.name "John Doe"
그리고 짐작할 수 있듯이 프로젝트는 전역 및 전역 재정의 시스템을 재정의합니다.
git config user.name
하거나 git config user.email
표시합니다.
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
git config user.name
올바른 것을 반환 하면 괜찮습니다. GNU / Linux 또는 다른 OS를 사용하고 있습니까?
환경 변수 가 사용해야 GIT_CONFIG
하는 파일을 가리킬 수도 git config
있습니다. 으로 GIT_CONFIG=~/.gitconfig-A git config key value
지정된 파일이 조작됩니다.
또 다른 방법은 direnv 를 사용 하고 디렉토리마다 구성 파일을 분리하는 것입니다. 예를 들면 다음과 같습니다.
.
├── companyA
│ ├── .envrc
│ └── .gitconfig
├── companyB
│ ├── .envrc
│ └── .gitconfig
└── personal
├── .envrc
└── .gitconfig
각각 .envrc
에는 다음과 같은 내용이 포함되어야합니다.
export GIT_CONFIG=$(pwd)/.gitconfig
그리고 .gitconfig
원하는 값을 가진 일반적인 gitconfig입니다.
저장소 별 구성 파일 (예 :)을 변경하여 프로젝트의 Git 구성을 사용자 정의 할 수 있습니다 /path/to/repo/.git/config
. BTW, git config
기본적으로이 파일에 씁니다.
cd /path/to/repo
git config user.name 'John Doe' # sets user.name locally for the repo
다른 프로젝트 (예 :에서 ~/.gitconfig.d/
)에 대해 별도의 프로필을 만든 다음 리포지토리의 구성 파일에 포함 하는 것을 선호 합니다.
cd /path/to/repo
git config include.path '~/.gitconfig.d/myproject.conf'
단일 프로젝트에 속하는 여러 저장소에서 동일한 옵션 세트를 사용해야하는 경우에 효과적입니다. 쉘 별명 또는 사용자 정의 Git 명령을 설정하여 프로파일을 조작 할 수도 있습니다.
나는 같은 배에있다. 나는 그들을 관리하기 위해 작은 bash 스크립트를 작성했습니다. https://github.com/thejeffreystone/setgit
#!/bin/bash
# setgit
#
# Script to manage multiple global gitconfigs
#
# To save your current .gitconfig to .gitconfig-this just run:
# setgit -s this
#
# To load .gitconfig-this to .gitconfig it run:
# setgit -f this
#
#
#
# Author: Jeffrey Stone <thejeffreystone@gmail.com>
usage(){
echo "$(basename $0) [-h] [-f name]"
echo ""
echo "where:"
echo " -h Show Help Text"
echo " -f Load the .gitconfig file based on option passed"
echo ""
exit 1
}
if [ $# -lt 1 ]
then
usage
exit
fi
while getopts ':hf:' option; do
case "$option" in
h) usage
exit
;;
f) echo "Loading .gitconfig from .gitconfig-$OPTARG"
cat ~/.gitconfig-$OPTARG > ~/.gitconfig
;;
*) printf "illegal option: '%s'\n" "$OPTARG" >&2
echo "$usage" >&2
exit 1
;;
esac
done
-s
Bash 스크립트에서 처리되지 않습니다.
[user] email = ...
블록 변경) 전역을 재정의합니다.~/.gitconfig
이는 사용자에게만 해당됩니까?