git config 파일의 위치
global config 파일의 위치
git의 global config 파일은 ~/.gitconfig 에 있다.
git의 local config 파일의 위치
git의 local config 파일은 .git/config 에 있다.
git config 파일의 구성
git config 파일은 두가지 계층으로 이루어져 있다. [ ] 으로 감싸진 카테고리와 = 왼쪽에 있는 파라미터와 오른쪽에 있는 파라미터에 대응되는 값이다.
예를 들어 아래에는 core 카테고리 안에 repositoryformatversion, filemode, bare, logallrefupdates, ignorecase, precomposeunicode 파라미터가 있다. git은 조작 명령이 들어올 때 이 config 파일을 읽고 config 파일의 설정에 맞춰 조작한다.
$ cat .git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
따라서 이 값을 직접 수정할 경우 값이 바뀌게 된다.
git config 파일을 조작하는 방법
git config 파일을 조작하는 방법은 직접 config 파일을 수정하는 방법과 명령어를 통해 config 파일을 수정하는 방법 두 가지가 있다. 직접 config 파일을 수정할 경우 제대로 이해하지 않고 수정하면 git repo가 망가질 수 있으므로 명령어를 통해 수정하는 것이 권장된다.
직접 config 파일을 조작
텍스트 편집기를 통해 직접 config 파일을 조작할 수 있다. 예를 들어 위에 나왔던 .git/config 파일에서 ignorecase 파라미터를 다음과 같이 vim을 사용해 바꿀 수 있다.
vim .git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = false # 조작
precomposeunicode = true
*vim은 i를 통해 편집 모드를 :wq를 이용해 저장한다. 자신이 익숙한 텍스트 편집기로 편집해도 되므로 꼭 vim으로 할 필요는 없다.
명령어를 통해 config 파일을 조작
아래 명령어를 통해 config 파일을 조작할 수 있다. 아래에서 하나 하나 차례대로 설명하겠다.
git config [local or global] [category].[parameter] [value]
[local or global] : --local , --global
--local을 쓰면 .git/config 파일이 수정되며, --global을 쓰면 ~/gitconfig 파일이 수정된다. 이 둘의 차이점은 해당 git repository에만 적용되는지 모든 git repository에 적용되는지의 차이이다.
[category]
category는 config 파일에서 []로 감싸여 있는 부분이다. 예를 들어 [그림1]을 기준으로는 [core] 가 category 이름이다.
[parameter]와 [value]
parameter은 category 아래에 있는 [parameter] = [value] 쌍에서 왼쪽에 있는 값이다. [그림1] 에서는 epositoryformatversion, filemode, bare, logallrefupdates, ignorecase, precomposeunicode 가 파라미터이다. value는 해당 파라미터에 대응되는 값이다.
조작 예시
예를 들어 로컬 config 파일인 .git/config의 [core]의 ignorecase를 false 로 바꾸고 싶다면
git config --local core.ignorecase false
을 사용하면 된다.
$ git config --local core.ignorecase false
$ cat .git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = false
precomposeunicode = true