Git 저장소에서 특정 설정이 있는지 확인하는 방법

GitBeginner
지금 연습하기

소개

이 랩에서는 Git 저장소 내의 특정 설정 값을 확인하는 방법을 배우게 됩니다. 먼저, git config 명령을 사용하여 개별 설정을 쿼리하는 것으로 시작하여, 글로벌 사용자 이름 및 이메일과 같은 값을 검색하는 방법을 이해할 것입니다.

다음으로, Git 설정의 다양한 레벨을 살펴보고, 특히 글로벌 설정과 로컬 설정의 차이점에 중점을 둘 것입니다. 두 레벨에서 모든 설정을 나열하여 설정이 어떻게 적용되는지, 그리고 로컬 설정이 글로벌 설정을 어떻게 재정의할 수 있는지 배우게 됩니다. 마지막으로, 요청된 설정 값이 누락된 경우를 처리하는 방법을 다룰 것입니다.

git config 를 사용하여 설정 쿼리하기

이 단계에서는 git config 명령을 사용하여 Git 설정을 쿼리하는 방법을 배우겠습니다. Git 은 설정 파일 (configuration files) 을 사용하여 동작 방식을 제어하는 설정을 저장합니다. 이러한 설정은 전역적으로 (모든 Git 저장소에 적용) 또는 로컬적으로 (특정 저장소에 적용) 적용될 수 있습니다.

먼저, 글로벌 설정을 확인해 보겠습니다. 설정 섹션에서 이름과 이메일을 전역적으로 구성했습니다. --global 플래그와 설정 이름 user.name을 사용하여 글로벌 사용자 이름을 쿼리할 수 있습니다.

git config --global user.name

설정에서 구성한 이름이 표시되어야 합니다.

Jane Doe

이제 글로벌 사용자 이메일을 쿼리해 보겠습니다.

git config --global user.email

구성한 이메일이 표시되어야 합니다.

jane.doe@example.com

이러한 명령은 이 시스템의 모든 저장소에서 커밋에 대해 Git 이 기본적으로 사용할 값을 보여줍니다. 이러한 설정을 쿼리하는 방법을 이해하는 것은 Git 설정을 관리하는 첫 번째 단계입니다.

글로벌 및 로컬 설정 확인

이 단계에서는 글로벌 및 로컬 Git 설정의 차이점과 모든 설정을 보는 방법을 살펴보겠습니다.

Git 은 다양한 수준의 설정을 가지고 있습니다. 가장 일반적인 설정은 다음과 같습니다.

  • 시스템 레벨: 시스템의 모든 사용자에게 적용됩니다. (개별 사용자에게는 덜 일반적입니다)
  • 글로벌 레벨: 시스템의 사용자 계정에 적용되며, 모든 저장소에 적용됩니다. 이는 ~/.gitconfig에 저장됩니다.
  • 로컬 레벨: 현재 저장소에만 적용됩니다. 이는 저장소 내의 .git/config에 저장됩니다.

로컬 설정은 글로벌 설정을 재정의하고, 글로벌 설정은 시스템 설정을 재정의합니다.

모든 글로벌 설정을 보려면 --global --list 플래그를 사용할 수 있습니다.

git config --global --list

설정했던 user.nameuser.email, 그리고 init.defaultBranch가 표시된 다음과 유사한 출력을 볼 수 있습니다.

user.name=Jane Doe
user.email=jane.doe@example.com
init.defaultBranch=master

이제 my-time-machine 저장소 내에 로컬 설정을 만들어 보겠습니다. 저장소 디렉토리로 다시 이동합니다.

cd ~/project/my-time-machine

이 특정 저장소에만 적용되는 로컬 사용자 이름을 설정할 수 있습니다. 다른 이름을 사용해 보겠습니다.

git config user.name "Time Traveler"

이번에는 --global 플래그를 사용하지 않았다는 점에 유의하세요. 이는 Git 에게 현재 저장소에 대한 설정을 로컬로 설정하도록 지시합니다.

이제 --local --list를 사용하여 이 저장소의 로컬 설정을 살펴보겠습니다.

git config --local --list

방금 설정한 로컬 사용자 이름이 표시되어야 합니다.

user.name=Time Traveler

마지막으로, 로컬 및 글로벌 설정을 모두 포함하여 현재 저장소에 적용되는 모든 설정을 살펴보겠습니다. Git 은 우선 순위가 높은 로컬 설정을 먼저 표시합니다.

git config --list

출력에는 로컬 및 글로벌 설정이 모두 표시됩니다. user.name은 "Time Traveler"(로컬 설정) 를 표시하고, user.email은 "jane.doe@example.com"(글로벌 설정, 로컬 이메일을 설정하지 않았으므로) 을 표시하는 것을 확인하세요.

user.name=Time Traveler
user.email=jane.doe@example.com
init.defaultBranch=master

이는 Git 이 글로벌 설정보다 로컬 설정을 우선시하는 방식을 보여줍니다.

설정 값 누락 처리

이 단계에서는 존재하지 않는 Git 설정 값을 쿼리하려고 할 때 어떤 일이 발생하는지, 그리고 Git 이 이를 어떻게 처리하는지 살펴보겠습니다.

때로는 전역적으로 또는 로컬로 아직 구성되지 않은 설정을 쿼리하려고 할 수 있습니다. 명시적으로 설정하지 않은 가상의 설정인 core.editor를 쿼리해 보겠습니다.

git config core.editor

my-time-machine 저장소에 로컬 core.editor를 설정하지 않았으므로 Git 은 글로벌 core.editor를 찾습니다. 그것 또한 설정되지 않은 경우 (이 환경의 경우), Git 은 오류와 함께 종료되고 아무것도 출력하지 않거나, 시스템 전체에 구성된 기본값이 있는 경우 해당 값을 출력합니다. 시스템의 기본 구성에 따라 다음과 유사한 출력을 보거나, 출력이 전혀 없을 수도 있습니다.


중요한 점은 Git 이 로컬 또는 글로벌 구성 파일에서 core.editor에 대한 특정 값을 찾지 못한다는 것입니다.

이제 user.email과 같이 전역적으로는 존재하지만 로컬로는 존재하지 않는 설정을 쿼리해 보겠습니다.

git config user.email

로컬 user.name을 설정한 my-time-machine 디렉토리에 있더라도 로컬 user.email을 설정하지 않았습니다. Git 은 먼저 로컬 user.email을 찾습니다. 찾지 못하면 글로벌 user.email을 찾아서 해당 값을 반환합니다.

jane.doe@example.com

이는 로컬 설정이 누락된 경우 Git 이 글로벌 설정으로 폴백 (fallback) 한다는 것을 확인합니다.

Git 이 설정 값을 검색하는 방식 (로컬 우선, 다음 글로벌, 다음 시스템) 을 이해하는 것은 Git 환경을 효과적으로 문제 해결하고 관리하는 데 중요합니다.

요약

이 랩에서는 git config 명령을 사용하여 Git 설정을 쿼리하는 방법을 배웠습니다. --global 플래그를 사용하여 user.nameuser.email과 같은 특정 글로벌 설정을 쿼리하는 것으로 시작했습니다. 이를 통해 시스템의 모든 저장소에 적용되는 개별 구성 값을 검색하는 방법을 보여주었습니다.

그런 다음 Git 구성의 다양한 수준 (시스템, 글로벌 및 로컬) 을 탐색하여 로컬 설정이 글로벌 설정을 재정의한다는 것을 이해했습니다. git config --global --list를 사용하여 모든 글로벌 설정을 나열하여 사용자 계정에 적용된 전체 구성을 확인하는 방법을 배웠습니다. 이를 통해 Git 이 사용하는 기본 설정에 대한 포괄적인 보기를 제공했습니다.