원격 저장소에서 Git 브랜치가 삭제되었는지 확인하는 방법

GitBeginner
지금 연습하기

소개

이 랩에서는 Git 브랜치가 원격 저장소에서 삭제되었는지 확인하는 방법을 배우게 됩니다. 로컬 저장소의 원격 뷰를 업데이트하고, 사용 가능한 원격 브랜치를 나열하며, 다양한 Git 명령을 사용하여 해당 브랜치의 존재 여부를 확인하는 데 필요한 단계를 다룰 것입니다.

먼저 git fetch --prune을 사용하여 로컬 저장소를 원격 저장소와 동기화하고 오래된 원격 추적 브랜치를 제거합니다. 그런 다음 git branch -r을 사용하여 로컬 저장소에 반영된 원격 추적 브랜치를 나열합니다. 마지막으로, git ls-remote를 사용하여 특정 브랜치에 대해 원격 저장소를 직접 쿼리하는 방법을 배우고, 이를 통해 확인하는 대체 방법을 제공합니다.

git fetch --prune 실행하여 업데이트

이 단계에서는 로컬 Git 저장소를 원격 저장소의 최신 변경 사항으로 업데이트하는 방법을 배우겠습니다. 다른 사람들과 함께 프로젝트를 진행하고 있는데, 그들이 변경 사항을 만들고 중앙 서버에 푸시했다고 가정해 봅시다. 이러한 변경 사항을 로컬 복사본에 가져오는 방법이 필요합니다.

이 작업을 위해 사용하는 명령은 git fetch입니다. 이 명령은 커밋, 파일 및 ref 를 원격 저장소에서 로컬 저장소로 다운로드합니다. 실제로 현재 작업에 병합하지 않고 서버에서 최신 업데이트를 가져오는 것과 같습니다.

또한 --prune 옵션을 사용합니다. 이 옵션은 원격에 더 이상 존재하지 않는 원격 추적 브랜치를 제거합니다. 이렇게 하면 원격 브랜치 목록을 깨끗하고 최신 상태로 유지하는 데 도움이 됩니다.

원격 저장소가 구성되어 있다고 가정해 보겠습니다 (향후 랩에서 원격을 추가하는 방법을 다룰 것입니다). 지금은 원격에서 가져오는 것을 시뮬레이션하겠습니다.

터미널을 열고, ~/project/my-time-machine 디렉토리에 있는지 확인한 다음 다음 명령을 실행합니다.

cd ~/project/my-time-machine
git fetch --prune origin

다음과 유사한 출력을 볼 수 있습니다 (정확한 출력은 원격 저장소에 따라 다릅니다).

From origin
 * [new branch]      feature/new-feature -> origin/feature/new-feature
 - [deleted]         (none)              -> origin/old-branch

이 출력은 Git 이 새 브랜치 (feature/new-feature) 를 가져왔고 원격에 더 이상 존재하지 않는 브랜치 (old-branch) 를 제거했음을 보여줍니다.

git fetch --prune을 실행하는 것은 원격 저장소에 대한 로컬 뷰를 정확하게 유지하는 좋은 방법입니다. 다른 사람이 변경한 사항을 자신의 작업에 통합하기 전에 확인할 수 있습니다.

git branch -r 로 원격 브랜치 확인

이전 단계에서는 git fetch --prune을 사용하여 로컬 저장소를 원격의 정보로 업데이트했습니다. 이제 fetch 이후 로컬 저장소에서 사용 가능한 원격 브랜치를 확인해 보겠습니다.

-r 옵션과 함께 git branch 명령을 사용하여 원격 추적 브랜치를 나열할 수 있습니다. 이 명령은 Git 이 원격 저장소에서 가져온 브랜치를 보여줍니다.

여전히 ~/project/my-time-machine 디렉토리에 있는지 확인하고 다음 명령을 실행합니다.

cd ~/project/my-time-machine
git branch -r

원격 브랜치 목록이 표시되어야 하며, 일반적으로 원격 이름 (예: origin) 과 브랜치 이름이 접두사로 표시됩니다. 예를 들어 다음과 같습니다.

  origin/master
  origin/feature/new-feature

이 출력은 원격 저장소 (이 경우 origin) 에 존재하고 로컬 Git 이 정보를 가지고 있는 브랜치에 대해 알려줍니다. 이것들은 직접 작업할 수 있는 로컬 브랜치가 아니라, 원격의 브랜치 상태에 대한 참조입니다.

원격 추적 브랜치를 이해하는 것은 중요합니다. 왜냐하면 이들은 마지막 git fetch 또는 git pull 시점의 원격 저장소 상태를 나타내기 때문입니다. 이를 통해 로컬 작업 브랜치에 영향을 주지 않고 원격에서 무슨 일이 일어나고 있는지 확인할 수 있습니다.

git ls-remote 로 확인

이전 단계에서는 git branch -r을 사용하여 로컬 저장소에서 원격 추적 브랜치를 확인했습니다. 원격 저장소의 참조를 확인하는 또 다른 유용한 명령은 git ls-remote입니다.

객체를 다운로드하는 git fetch와 달리, git ls-remote는 객체를 가져오지 않고 원격 저장소의 참조 (브랜치 및 태그와 같은) 를 단순히 나열합니다. 이는 로컬 복사본을 업데이트하지 않고 원격에서 사용 가능한 항목을 빠르게 확인하는 데 유용합니다.

~/project/my-time-machine 디렉토리에 있는지 확인하고 원격 이름 (일반적으로 origin) 을 지정하여 다음 명령을 실행합니다.

cd ~/project/my-time-machine
git ls-remote origin

다음과 유사한 출력을 볼 수 있습니다.

a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 HEAD
a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 refs/heads/master
f0e1d2c3b4a59687765443210fedcba987654321 refs/heads/feature/new-feature

이 출력은 커밋 해시와 참조 이름이 함께 표시됩니다. HEAD는 일반적으로 원격의 기본 브랜치 (대개 master 또는 main) 를 가리킵니다. refs/heads/는 브랜치를 나타내고, refs/tags/는 태그를 나타냅니다.

git branch -rgit ls-remote의 출력을 비교하면 실제로 원격에 있는 항목 (git ls-remote) 과 마지막 fetch 이후 로컬 저장소가 원격에 대해 알고 있는 항목 (git branch -r) 간의 차이점을 이해하는 데 도움이 됩니다.

이 명령은 전체 fetch 작업을 수행하지 않고 원격 저장소의 구조를 빠르게 엿볼 수 있는 방법입니다.

요약

이 랩에서는 Git 브랜치가 원격 저장소에서 삭제되었는지 확인하는 방법을 배웠습니다. 첫 번째 중요한 단계는 git fetch --prune을 사용하여 로컬 저장소의 원격 보기를 업데이트하는 것입니다. 이 명령은 원격에서 최신 정보를 다운로드하고, 중요하게는 원격에 더 이상 존재하지 않는 로컬 원격 추적 브랜치를 제거하여 로컬 보기가 정확하도록 보장합니다.

fetch 및 prune 후, git branch -r과 같은 명령을 사용하여 로컬 저장소에 여전히 존재하는 원격 추적 브랜치를 나열할 수 있습니다. fetch 전후의 출력을 비교하거나, fetch 중에 prune 된 브랜치를 관찰함으로써 특정 브랜치가 원격에서 삭제되었는지 확인할 수 있습니다.