많은 개발자에게 Git 사용은 거의 필수입니다. 그 이유는 여러 가지가 있지만, 가장 큰 장점은 프로젝트에서 이루어지는 모든 변경 사항을 거의 의식하지 않고도 기록할 수 있다는 점입니다. 하지만 시간이 지나 로컬 및 원격 Git 브랜치를 삭제해야 하는 순간이 올 수도 있습니다. 당연한 필요성이지만, 그 과정은 생각만큼 직관적이지 않을 수 있습니다.
이 글에서는 로컬 및 원격 Git 브랜치를 삭제하는 방법을 자세히 알아보겠습니다. 본론으로 들어가기 전에 먼저 Git이 전반적으로 어떻게 작동하는지 간단히 살펴보겠습니다.
Git 기본 개념 빠르게 살펴보기
본격적인 내용에 앞서 Git에 대한 간단한 개요를 짚고 넘어가겠습니다. Git은 개발 프로젝트 내의 활동을 기록하는 도구로, Google Docs 등 다른 소프트웨어에서 제공하는 버전 관리(수정 기록) 기능과 매우 유사합니다.
Git '저장소(repository)'의 계층 구조는 다음과 같이 요약할 수 있습니다:
- 프로젝트의 최종 버전을 담는 메인 '트랙'이 존재합니다. 전통적으로 master라고 불렸지만, 최근에는 main 또는 trunk라는 명명 규칙으로 바뀌어 가고 있습니다.
- 각 저장소는 여러 개의 '브랜치(branch)'를 가질 수 있습니다. 브랜치는 트렁크의 복사본으로, 개발자들이 독립된 환경에서 동시에 작업할 수 있도록 해줍니다.
- 변경 사항을 브랜치에 '커밋(commit)'하고 '푸시(push)'합니다.
- 작업이 완료된 브랜치는 트렁크와 병합되어 새로운 최종 트렁크가 됩니다.
전반적으로 Git은 이러한 원칙을 지켜 작업할 때 훌륭한 도구입니다. 하지만 브랜치를 삭제하려고 할 때는 골치 아픈 상황이 벌어질 수 있습니다.
로컬 및 원격 Git 브랜치 삭제 방법
로컬 및 원격 Git 브랜치를 삭제하는 첫 번째 단계는 사용할 명령어의 구조를 이해하는 것입니다:
git <command> <modifier> <remote_name> <branch_name>
이 구조를 파악하면 필요에 맞게 응용할 수 있습니다. 먼저 로컬 브랜치부터 살펴보겠습니다. 여기서는 명령줄 환경에서 작업할 Git 저장소가 준비되어 있다고 가정합니다.
로컬 브랜치를 삭제하려면 git branch 명령어와 -d 옵션, 그리고 브랜치 이름을 함께 사용합니다. 예시에서는 oldbranch를 사용했지만, 실제로는 본인 프로젝트의 브랜치 이름을 입력하면 됩니다. 조합하면 다음과 같습니다:
git branch -d oldbranch
이 명령은 Git에게 로컬 저장소에서 해당 이름의 브랜치를 삭제하라고 지시합니다. 하지만 Git이 브랜치 삭제를 허용하지 않는 경우가 있습니다. 이는 해당 브랜치에 아직 다른 로컬 브랜치와 병합되지 않은 커밋이 포함되어 있거나, 브랜치를 원격 저장소에 '푸시'하지 않았기 때문일 수 있습니다.
이런 경우에는 -d 대신 -D 옵션을 사용하세요.
원격 브랜치를 삭제할 때는 git push 명령어를 사용합니다. 앞서 살펴본 명령 구조로 돌아가면, 원격 저장소 이름도 필요합니다. 관례상 보통 origin을 사용하지만, 확실하지 않다면 팀 리더에게 확인해 보세요. 모두 조합하면 다음과 같습니다:
git push -d origin remotebranch
사용 중인 Git 버전에 따라 전체 명령어의 순서를 변경해야 할 수도 있습니다:
git push origin --delete remotebranch
마찬가지로 옵션을 대문자로 작성하면 확인 절차 없이 무조건 삭제되고, 소문자 옵션을 사용하면 대개 확인 요청 메시지가 표시됩니다.
마무리
전반적으로 Git은 강력한 언어이자 도구이며 훌륭한 개발 보조 수단입니다. 하지만 Git 저장소에 무언가를 추가할 때는 편리하지만, 제거할 때는 다소 까다로울 수 있습니다. 로컬 및 원격 Git 브랜치를 삭제하는 것은 결국 명령어 구조를 익히는 문제입니다. 구조만 제대로 이해하면 누구나 쉽게 활용할 수 있습니다. 프로젝트에 Git을 도입하려고 고민 중이라면, Git과 GitHub 시작하기 가이드를 함께 참고해 보세요.