Git 동작 사용자 정의: 설정, 별칭 및 중요한 파일

유용한 설정, 명확한 별칭, .gitignore 및 .gitattributes와 같은 주요 파일로 Git을 사용자 정의하세요.

Git 동작 사용자 정의: 설정, 별칭 및 중요한 파일

Git 동작을 사용자 정의하면 일상적인 버전 관리를 더 빠르고 안전하며 예측 가능하게 만들 수 있습니다. 올바른 Git 설정, 별칭 및 중요한 파일을 갖추면 로컬 워크플로우가 팀이 실제로 소프트웨어를 구축하는 방식과 일치할 수 있습니다.

목표는 아무도 이해하지 못하는 영리한 설정을 만드는 것이 아닙니다. 목표는 저장소를 감사하고 지원하기 쉽게 유지하면서 일반적인 작업에서 마찰을 제거하는 것입니다.

Git 설정 작동 방식

Git은 여러 위치에서 설정을 읽으며, 더 가까운 설정이 우선합니다. 이는 Git이 잘못된 이름, 편집기, 병합 도구, 줄 끝 또는 서명 동작을 사용하는 이유를 디버깅할 때 중요합니다.

세 가지 주요 설정 범위는 다음과 같습니다:

  • 시스템: 시스템의 모든 사용자에게 적용됩니다.
  • 전역: 사용자 계정에 적용됩니다.
  • 로컬: 현재 저장소에만 적용됩니다.

일반적으로 전역 및 로컬 설정을 사용합니다. 전역 설정은 신원, 기본 편집기 및 일반적인 별칭에 적합합니다. 로컬 설정은 작업 프로젝트에 대해 다른 이메일 주소와 같은 저장소별 동작에 더 적합합니다.

다음 명령을 사용하여 설정이 어디에서 왔는지 확인할 수 있습니다:

git config --list --show-origin
git config user.email
git config --local user.email
git config --global user.email

예를 들어, 개인 이메일을 전역으로 사용할 수 있습니다:

git config --global user.name "Alex Morgan"
git config --global user.email "[email protected]"

그런 다음 작업 저장소 내에서 이메일만 재정의합니다:

git config --local user.email "[email protected]"

이렇게 하면 개인 신원으로 회사 저장소에 실수로 커밋하는 것을 방지할 수 있습니다. 또한 규정 준수, 소유권 및 코드 검토를 위해 커밋 기록을 더 깔끔하게 만듭니다.

신원 설정에 대한 더 자세한 내용은 Git 사용자 설정 마스터하기를 참조하세요.

먼저 사용자 정의할 유용한 설정

명확성을 높이고 작은 실수를 방지하는 설정부터 시작하세요. 실제 가치를 얻기 위해 거대한 설정 파일이 필요하지 않습니다.

좋은 기준에는 기본 브랜치 이름이 포함됩니다:

git config --global init.defaultBranch main

선호하는 편집기를 설정하여 Git이 커밋 메시지, 리베이스 계획 및 병합 노트를 실제로 사용하는 도구에서 열 수 있도록 합니다:

git config --global core.editor "code --wait"

macOS, Linux 및 Windows에서 작업하는 경우 줄 끝에 주의해야 합니다. 많은 팀이 저장소에서 줄 끝을 정규화하고 각 개발자의 편집기가 표시를 처리하도록 하는 것을 선택합니다. 일반적인 Windows 설정은 다음과 같습니다:

git config --global core.autocrlf true

macOS 또는 Linux에서는 팀이 종종 다음을 사용합니다:

git config --global core.autocrlf input

기존 저장소에서 줄 끝 설정을 무심코 변경하지 마십시오. 모든 줄이 수정된 것처럼 보이는 거대한 diff가 보이면 커밋하기 전에 .gitattributes를 검사하십시오.

Git의 출력을 더 읽기 쉽게 만들 수도 있습니다:

git config --global color.ui auto
git config --global column.ui auto
git config --global branch.sort -committerdate
git config --global tag.sort version:refname

변경 사항을 가져올 때 팀이 기대하는 동작을 선택하십시오:

git config --global pull.rebase false

또는:

git config --global pull.rebase true

어느 옵션도 보편적으로 올바르지 않습니다. 병합 기반 풀은 병합 커밋을 유지합니다. 리베이스 기반 풀은 선형 로컬 기록을 유지합니다. 중요한 것은 의도적으로 선택하고 팀 기대치를 문서화하는 것입니다.

시간을 절약하는 Git 별칭 만들기

Git 별칭은 긴 명령을 짧고 기억하기 쉬운 바로 가기로 바꿉니다. 하루에 여러 번 실행하는 명령에 특히 유용합니다.

다음은 읽기 쉽게 유지되는 실용적인 별칭입니다:

git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.cm commit
git config --global alias.last "log -1 HEAD --stat"
git config --global alias.unstage "restore --staged"

그 후 git st는 상태를 제공하고 git unstage file.txt는 작업 복사본을 건드리지 않고 스테이징 영역에서 파일을 제거합니다.

로그 별칭은 많은 팀이 가장 큰 가치를 얻는 곳입니다:

git config --global alias.lg "log --oneline --decorate --graph --all"

이제 다음을 실행할 수 있습니다:

git lg

이것은 브랜치, 태그 및 커밋의 간결한 그래프를 제공합니다. 리베이스, 병합 또는 로컬 브랜치 정리 전에 유용합니다.

별칭은 팀원이 무엇을 하는지 추측할 수 있을 정도로 단순하게 유지하십시오. git save와 같은 별칭은 만든 사람에 따라 커밋, 스태시 또는 다른 것을 의미할 수 있습니다. git unstage와 같은 별칭은 명확합니다.

다음 명령으로 별칭을 검토할 수 있습니다:

git config --global --get-regexp '^alias\.'

더 많은 예제는 사용자 정의 Git 별칭 만들기를 참조하세요.

알아야 할 중요한 Git 파일

Git 동작은 git config로만 제어되지 않습니다. 여러 저장소 파일이 추적, 무시, 정규화 및 보호되는 방식을 결정합니다.

가장 일반적인 파일은 .gitignore입니다. Git에 추적되지 않은 파일을 무시하도록 지시합니다. 일반적인 항목에는 빌드 출력, 로컬 환경 파일, 편집기 폴더 및 종속성 캐시가 포함됩니다:

node_modules/
dist/
.env
.DS_Store

광범위한 패턴에 주의하십시오. *.json을 무시하면 생성된 파일이 숨겨질 수 있지만 중요한 구성도 숨길 수 있습니다. 가능하면 특정 디렉토리나 파일 이름을 무시하십시오.

.gitattributes 파일은 Git이 파일 유형을 처리하는 방식을 제어합니다. 줄 끝, 생성된 파일, linguist 동작 및 병합 전략에 유용합니다:

* text=auto
*.sh text eol=lf
*.bat text eol=crlf

이는 다른 운영 체제를 사용하는 팀에서 특히 유용합니다. 시끄러운 diff를 줄이고 잘못된 줄 끝으로 인해 스크립트가 깨지는 것을 방지합니다.

.git/config 파일은 로컬 저장소 구성을 저장합니다. 일반적으로 git config --local로 편집하지만, 읽으면 원격, 브랜치 추적 및 저장소별 옵션 문제를 해결하는 데 도움이 될 수 있습니다.

Git 훅은 .git/hooks/ 아래에 있습니다. 커밋, 푸시, 병합 및 기타 이벤트 전에 스크립트를 실행할 수 있습니다. 기본적으로 훅은 로컬이며 활성 스크립트로 커밋되지 않습니다. 훅에 의존하는 팀은 종종 설정 스크립트나 훅 관리자를 사용하여 일관되게 설치합니다.

도움을 요청해야 할 때

대부분의 Git 구성 변경은 안전하지만, 일부는 컨텍스트 없이 적용하면 팀을 혼란에 빠뜨릴 수 있습니다. 줄 끝 규칙, 병합 드라이버, 서명 요구 사항 또는 공유 훅 동작을 변경하기 전에 선임 엔지니어, DevOps 엔지니어 또는 저장소 소유자에게 문의하십시오.

보호된 저장소에서 잘못된 신원으로 커밋이 나타나는 경우에도 도움을 요청해야 합니다. 코드가 푸시된 후 작성자 메타데이터를 수정하려면 기록 재작성이 필요할 수 있으며, 이는 해당 브랜치를 사용하는 모든 사람에게 영향을 미칩니다.

Git이 갑자기 다르게 동작하면 git config --list --show-origin부터 시작하십시오. 이 명령 하나로 추측보다 빠르게 미스터리를 설명하는 경우가 많습니다.

신중한 사용자 정의는 Git이 무슨 일이 일어나고 있는지 숨기지 않으면서 덜 반복적으로 느껴지게 만듭니다. 별칭을 명확하게 유지하고, 저장소 규칙을 문서화하며, 한 프로젝트가 나머지 시스템과 다른 동작이 필요할 때 로컬 설정을 사용하십시오.