identity와 기본값, 무시할 파일
개별 프로젝트보다 오래 가는 설정이 세 가지 있어. commit에 어떤 identity를 남길지, 어떤 기본값을 쓸지, 무엇을 추적하지 않을지야. 건너뛰면 언젠가 버그처럼 돌아와. 몇 년치 commit에 잘못된 author가 찍히거나, master branch가 불쑥 생기거나, secret token이 이력에 새는 식으로 말이야.
Git은 모든 commit에 이름과 email을 넣어. global 설정으로 한 번 정해두면 돼. 실제 email을 쓰고 싶지 않다면 GitHub의 noreply 주소로 수집을 피할 수도 있어. 이왕이면 init.defaultBranch를 main으로 정하고, 쓸 만한 기본 편집기를 고르고, pull.rebase를 true로 둬서 무심코 실행한 git pull이 느닷없는 merge를 만들지 않게 해. config는 system, global, local 세 층이고 local 값이 앞선다. git config --list --show-origin은 각 값이 어느 파일에서 왔는지 보여줘. 설정이 예상과 다를 때 아주 유용한 단서야.
.gitignore는 '이것만은 이력에 넣지 않겠다'는 목록이야. repo 안의 평범한 파일이며 한 줄에 pattern 하나를 적어. 빌드 결과물, dependency 폴더, OS 찌꺼기, 편집기 swap file, 특히 .env, private key, credential dump 같은 secret이 대상이지. 단, .gitignore는 untracked file에만 영향을 줘. .env를 한 번이라도 commit했다면 ignore에 추가해도 계속 추적돼. 먼저 git rm --cached .env를 실행해야 해. 실제 secret이 들어 있었다면 이미 노출된 것으로 보고 곧바로 rotate해. 파일을 지워도 Git 이력에는 남으니까.
습관을 하나 더 들이자. 적어도 호스트 하나에는, 보통은 GitHub에 SSH key를 연결해둬. HTTPS도 쓸 수 있지만 SSH와 agent를 쓰면 날마다 password를 입력할 필요가 없어. ssh-keygen -t ed25519 -C "you@example.com"으로 key를 만들고 .pub 쪽을 GitHub에 복사하면, 이후 clone할 때 credential을 반복해서 넣지 않아도 돼.