git config --global rebase.autoStash true → 리베이스 전에 변경사항을 임시로 저장(stash)한 후, 리베이스가 끝나면 다시 적용합니다.
git config --global rebase.updateRefs true → 리베이스 후에 관련 브랜치의 참조(refs)를 자동으로 업데이트해 줍니다.
3. 개인 취향에 따른 선택적 설정
이 설정들은 사용자의 취향에 따라 적용할 수 있습니다.
(1) 병합 충돌 시 더 나은 표시
두 사람이 같은 파일을 수정하여 충돌이 생길 때, 기본 표시 방식보다 더 자세하게 충돌 상황을 보여줍니다.
git config --global merge.conflictstyle zdiff3 → 충돌이 발생한 경우, 좌우 변경 내용뿐만 아니라 변경 전의 기본 상태도 함께 보여줍니다. 단, 이 옵션은 Git 2.35 이상에서 사용 가능합니다. 구버전의 경우 diff3를 사용할 수 있습니다.
(2) 기본 pull 동작 변경
Git pull 명령어는 원격 저장소의 변경 사항을 가져올 때 기본적으로 merge(병합)를 수행합니다. 이를 rebase 방식으로 바꾸면 기록이 깔끔해질 수 있습니다.
git config --global pull.rebase true
(3) 파일 시스템 모니터링 기능 사용
큰 프로젝트에서는 git status 같은 명령어가 느릴 수 있는데, 이를 빠르게 하기 위해 파일 시스템의 변화를 감시하는 기능을 사용할 수 있습니다.
git config --global core.fsmonitor true → 저장소 내 파일 변경 사항을 모니터링하여 빠르게 반영합니다.
git config --global core.untrackedCache true → 변경되지 않은 파일들의 목록을 캐시해 두어 성능을 높입니다. 단, 이 기능은 각 저장소마다 하나씩 프로세스를 실행하기 때문에 저장소가 너무 많으면 시스템에 부담이 될 수 있습니다.
최종 정리
위의 설정들은 Git 코어 개발자들이 실제로 사용하며 Git을 더 편리하게 만들기 위해 추천하는 옵션들입니다.
Git을 더 좋게 만드는 설정은 브랜치, 태그, 기본 브랜치, diff 비교, push, fetch 등 Git의 기본 동작을 개선합니다.
추가로 해도 무방한 설정들은 오타 수정, 커밋 시 diff 표시, 충돌 해결 기록 재사용, 전역 무시 파일 지정, 그리고 리베이스 작업을 더 편리하게 합니다.
개인 취향에 따른 설정은 병합 충돌 표시 방법, 기본 pull 동작 변경, 파일 시스템 모니터링 기능 등을 포함합니다.
이 모든 설정들을 한 번에 자신의 ~/.gitconfig 파일에 추가하면, 앞으로 Git을 사용할 때 더욱 편리하고 효율적인 작업 환경을 만들 수 있습니다. 각 설정이 어떤 역할을 하는지 이해하면서 사용해 보세요. Git을 사용하는 동안 문제가 생기거나 어려운 점이 있다면, 이 설정들이 왜 필요한지 다시 한 번 생각해 보는 것도 큰 도움이 될 것입니다.
이상으로 Git 코어 개발자들이 사용하는 다양한 설정에 대해 쉽고 자세하게 설명해 보았습니다.