핵심 요약
- Git 작업 흐름에서 브랜치 삭제는 필수적인 과정입니다.
- 로컬 브랜치 삭제 시에는 “git branch -d [브랜치명]” 명령어를 사용하지만, 병합되지 않은 변경 사항에 주의해야 합니다.
- GitHub Desktop, GitKraken, Tower, Bitbucket 등 다양한 도구에서 브랜치를 삭제하는 방법이 다르므로, 각 도구의 고유한 삭제 과정을 숙지해야 합니다.
Git 브랜치는 가볍기 때문에 필요할 때마다 쉽게 만들 수 있습니다. 하지만, 더 이상 필요 없는 브랜치가 쌓이기 쉽습니다. 그렇다면 브랜치 삭제는 어떻게 해야 할까요?
브랜치를 삭제하는 이유는 무엇일까요?
만약 Git 브랜치를 사용한 프로젝트 구성에 익숙하지 않다면, 브랜치를 만든 후 필요 없어지는 경우가 많을 것입니다. 브랜치는 가벼운 작업이므로 크게 걱정할 필요는 없습니다. 생성 속도가 빠르고 디스크 공간을 효율적으로 사용합니다.
이러한 이유로, 많은 Git 개발 작업 흐름에서는 작은 작업이나 짧은 작업에도 브랜치 사용을 권장합니다. 예를 들어, 모든 버그 수정에 대해 별도의 브랜치를 만드는 것이 일반적인 전략입니다.
브랜치를 삭제하는 것은 브랜치를 만드는 것만큼이나 일상적인 작업 흐름의 일부가 되어야 합니다.
브랜치가 있는 저장소 예시
다음은 브랜치 구조를 보여주는 저장소 예시입니다.
이 저장소에는 main과 dev라는 두 개의 브랜치가 있습니다. 각 로컬 브랜치는 원격 서버(origin)의 해당 업스트림 브랜치를 추적하는 브랜치입니다.
브랜치 추적은 간단하므로, 명령줄에서 git 브랜치를 나열하거나 선호하는 클라이언트에서 확인하는 방법을 알아두는 것이 좋습니다.
명령줄을 이용한 브랜치 삭제
브랜치 삭제를 위한 기본 명령어 구문은 다음과 같습니다.
git branch (-d | -D) [-r] <브랜치명>...
로컬 브랜치 삭제 방법
가장 간단한 명령어 형식은 모든 변경 사항이 병합된 경우 로컬 브랜치를 삭제하는 것입니다.
git branch -d dev
정상적으로 삭제되면 다음과 같은 메시지가 표시됩니다.
현재 활성화된 브랜치는 삭제할 수 없습니다. 삭제를 시도하면 다음과 같은 오류 메시지가 나타납니다.
병합되지 않고 푸시되지 않은 변경 사항이 있는 로컬 브랜치를 삭제하면 해당 변경 사항이 손실됩니다. 따라서 git은 기본적으로 해당 브랜치 삭제를 거부합니다. 이 예에서 ‘dev’ 브랜치는 원격 브랜치에 푸시되지 않은 변경 사항을 가지고 있습니다.
오류 메시지에서 알 수 있듯이, ‘-D’ 플래그를 사용하면 강제로 삭제할 수 있습니다.
해당 원격 브랜치가 최신 상태라면, 로컬 추적 브랜치가 병합되지 않은 상태라도 삭제할 수 있습니다. Git은 여전히 경고 메시지를 표시하여 사용자에게 상황을 알려줍니다.
원격 브랜치 삭제 방법
원격 브랜치를 삭제하는 방법은 다소 다릅니다. 삭제하려면 ‘git push’ 명령어와 함께 ‘-d’ 플래그를 사용해야 합니다. 그런 다음 원격 이름(주로 ‘origin’)과 브랜치 이름을 입력합니다.
GitHub Desktop을 이용한 로컬 및 원격 브랜치 삭제
명령줄 git 프로그램과 달리, GitHub 데스크톱 앱에서는 현재 활성화된 브랜치만 삭제할 수 있습니다. 브랜치 메뉴에서 삭제 옵션을 선택하고 확인하면 됩니다.
GitHub Desktop에서는 git 자체에서 지원하더라도 기본 브랜치(예: main)를 삭제할 수 없습니다. 기본 브랜치가 현재 활성화된 브랜치인 경우, 앱은 메뉴 기능을 비활성화합니다.
만약 해당 브랜치가 원격 브랜치도 나타내는 경우, GitHub Desktop은 원격에서도 해당 브랜치를 삭제할 수 있는 옵션을 제공합니다.
GitKraken을 이용한 브랜치 삭제
GitKraken은 왼쪽 사이드바에 저장소의 로컬 및 원격 브랜치를 표시합니다. 각 브랜치는 별도로 삭제해야 합니다.
삭제할 브랜치 이름 위로 마우스를 가져간 후, 세 개의 점으로 된 브랜치 작업 메뉴를 클릭합니다. 메뉴에서 ‘<브랜치 이름> 삭제’를 선택합니다.
삭제 작업이 파괴적임을 알리는 확인 메시지가 나타납니다. ‘삭제’ 버튼을 클릭하여 계속 진행할지 확인해야 합니다.
git 명령줄 프로그램의 기본 동작처럼, 먼저 삭제하려는 브랜치가 아닌 다른 브랜치로 전환해야 합니다. 그렇지 않으면 다음과 같은 오류 메시지가 표시됩니다.
Tower를 이용한 로컬 및 원격 브랜치 삭제
Tower를 사용하여 브랜치를 삭제하는 과정은 GitKraken과 매우 유사합니다. 앱 왼쪽 패널에 로컬 및 원격 브랜치가 표시됩니다. 삭제할 브랜치를 마우스 오른쪽 버튼으로 클릭하고 상황에 맞는 메뉴에서 삭제 옵션을 선택합니다.
주요 차이점 중 하나는 확인 과정에서 로컬 브랜치와 함께 원격 브랜치도 삭제할 수 있다는 점입니다.
GitHub에서 브랜치 삭제
GitHub는 원격 소스 역할을 하므로, 브랜치는 기본적으로 원격 브랜치입니다. GitHub 웹사이트에서 브랜치를 삭제하는 경우, 다른 방법 중 하나를 사용하여 해당 로컬 브랜치를 삭제해야 합니다.
GitHub 데스크톱 앱과 마찬가지로, GitHub 웹사이트에서는 기본 브랜치 삭제를 허용하지 않습니다. 시도하면 다음과 같은 오류 메시지가 나타납니다.
하지만 다른 브랜치를 삭제하는 것은 간단합니다. 저장소의 코드 페이지에서 브랜치 링크를 클릭하고, 삭제할 브랜치를 찾은 후 휴지통 모양의 브랜치 삭제 아이콘을 클릭합니다.
병합되지 않은 변경 사항에 대한 확인은 없으므로 GitHub는 해당 브랜치를 즉시 삭제합니다. 하지만 이는 원격 브랜치를 나타내기 때문에 이러한 동작은 의미가 있습니다.
삭제 후에는 브랜치 복원 버튼이 나타납니다. 하지만 이는 실수로 삭제 아이콘을 클릭했을 경우에 대비한 일종의 실행 취소 기능일 뿐입니다. 페이지를 새로 고치거나 다른 곳으로 이동하면 해당 옵션을 잃게 되므로, 여기에 의존하지 않는 것이 좋습니다!
Bitbucket에서 로컬 및 원격 브랜치 삭제
GitHub와 마찬가지로, Bitbucket에서도 기본 브랜치를 삭제할 수 없습니다. Bitbucket에서는 이를 ‘저장소 설정의 기본 브랜치’라고 부릅니다. 해당 작업 메뉴를 통해 ‘브랜치’ 탭에 나열된 다른 브랜치를 삭제할 수 있습니다.
대규모 정리 작업을 하는 경우, 한 번에 두 개 이상의 브랜치를 삭제할 수도 있습니다.
브랜치 삭제는 일반적인 Git 작업 흐름의 일부입니다.
Git 브랜치는 워크플로를 복잡하게 만들 수 있습니다. 특히 로컬, 원격, 추적 브랜치가 있는 경우에는 더욱 그렇습니다. 하지만 단순한 일상 개발 과정에서는 항상 로컬 브랜치를 만들고 삭제하게 됩니다. 이는 익숙해져야 할 일반적인 Git 작업 흐름의 핵심입니다.
브랜치를 삭제하는 방법을 정확히 기억하기 어렵다면, 별칭을 설정하여 브랜치를 제거하고 프로세스를 단순화하는 것을 고려해볼 수 있습니다.