# 내 Git 아이덴티티 설정 방법

> Clean Markdown view of GeekNews topic #17952. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=17952](https://news.hada.io/topic?id=17952)
- GeekNews Markdown: [https://news.hada.io/topic/17952.md](https://news.hada.io/topic/17952.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2024-11-26T09:43:57+09:00
- Updated: 2024-11-26T09:43:57+09:00
- Original source: [benji.dog](https://www.benji.dog/articles/git-config/)
- Points: 3
- Comments: 1

## Topic Body

### 내 Git 정체성을 설정하는 방법

- **소개**: 이 글은 Git 설정을 통해 작업 환경에 맞는 정체성을 관리하는 방법을 설명함. 필자는 `includeIf`를 사용하여 특정 조건에 따라 파일을 포함하는 방법을 발견했음.

- **Git 설정**:
  - `includeIf`를 사용하여 특정 디렉토리에 따라 다른 Git 설정 파일을 포함할 수 있음.
  - 예를 들어, `~/code` 아래의 Git 디렉토리에는 `~/.config/git/personal`을, `~/work` 아래에는 `~/.config/git/work`을 포함하도록 설정할 수 있음.
  - 각 파일에는 사용자 이름, 이메일, 서명 키 등의 정보가 포함됨.

- **리모트 URL 기반 설정**:
  - `hasconfig:remote.*.url`을 사용하여 특정 리모트 URL이 존재할 때 Git 설정을 조건부로 구성할 수 있음.
  - 예를 들어, `github.com:orgname/**`와 같은 리모트가 있는 디렉토리에서는 `~/.config/git/config-gh-org`을 사용하도록 설정할 수 있음.

- **SSH 키 설정**:
  - SSH 키를 설정하여 리모트에 `pull` 및 `push`를 할 수 있도록 해야 함.
  - `~/.ssh/config` 파일에서 `Host`와 `IdentityFile`을 설정하여 각 리모트에 맞는 SSH 키를 사용할 수 있음.
  - 같은 `Hostname`에 대해 다른 `IdentityFile`을 사용하려면 `Host` 값을 다르게 설정해야 함.

- **Git config에서 SSH 설정 사용**:
  - 특정 리포지토리에 대해 다른 SSH 설정을 사용하려면 Git config에서 `insteadOf`를 사용하여 URL을 대체할 수 있음.
  - 예를 들어, `github.com:orgname` 대신 `gh-work:orgname`을 사용하여 올바른 SSH 설정을 적용할 수 있음.

- **고려사항**:
  - 이 접근 방식에 문제가 있을 수 있으며, 더 나은 방법이 있는지에 대한 피드백을 받고 싶음.

#### 참고 자료
- 여러 Git 정체성을 관리하는 방법에 대한 다양한 블로그 글을 참고함.

## Comments



### Comment 31707

- Author: neo
- Created: 2024-11-26T09:43:57+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=42233524) 
- `gh-work`라는 이름을 사용하여 SSH 및 Git 신원을 구분하는 방법을 설명함. `gh-work`로 클론한 모든 Git 저장소는 `gh-work.inc`의 설정을 따르게 되어 SSH 구성과 동일한 서명 키를 사용함

- 한 스타트업에서 일할 때, 매일 신원을 동화 같은 이름으로 바꾸는 동료가 있었음. 이는 버전 관리 포렌식에 도움이 되지 않았지만, 신원 구성에 무엇이든 넣을 수 있다는 점을 상기시키려는 의도였을 수 있음

- `.gitconfig`에 신원에 대한 별칭을 추가하여, 저장소를 초기화하거나 클론한 후 `git config-company` 또는 `git config-personal` 명령어를 실행하는 방법을 제안함

- `~/.ssh/config`를 수정할 필요 없이, `~/.gitconfig`에 SSH 명령어를 설정하여 서브모듈을 쉽게 관리할 수 있는 방법을 설명함

- `includeIf`와 `hasconfig:remote`를 사용하여 디렉토리별로 Git 설정을 관리하는 방법을 소개함. 이는 저장소를 클론할 때도 유용함

- 컨설턴트에게는 업무용으로 별도의 기기나 최소한 별도의 OS 사용자를 사용할 것을 강력히 권장함. 개인 기기를 업무에 사용하는 것은 위험할 수 있음

- NixOS와 home-manager를 사용하여 Git 설정을 관리하는 방법을 설명함. `hasconfig:remote` 조건을 사용하여 특정 이메일을 설정함

- SSH 복잡성을 `~/.ssh`에 유지하고, 고객이나 프로젝트별로 별도의 설정을 포함하는 방법을 설명함. GitHub와 같은 호스트 이름이 없는 경우에는 별칭을 할당함

- `gitdir`을 사용하여 업무와 개인 작업을 분리하는 방법을 설명함. `hasconfig:remote`는 게임 체인저임

- 업무와 개인 저장소를 `~/dev`와 `~/src`로 분리하여 관리하는 방법을 설명함. 각 경로에 따라 다른 Git 설정 파일을 포함함

- 개인 및 업무용 `.gitconfig` 파일을 설정하여 이메일과 서명 키를 다르게 설정하는 방법을 설명함. GPG 서명을 활성화하여 커밋에 서명함
