주요 내용

브랜치를 제거하는 행위는 개발자가 코드베이스를 간소화하고 필수 작업에 집중할 수 있도록 하기 때문에 버전 관리 목적으로 Git을 사용하는 표준 프로토콜 내에서 매우 중요합니다.

특정 로컬 브랜치를 안전하게 삭제하려면 터미널이나 Git 클라이언트에서 “git branch -d [브랜치 이름]” 명령을 실행하면 됩니다. 그러나 이 특정 브랜치 내에서 동기화되지 않거나 병합되지 않은 변경 사항은 계속 유지되므로 삭제 프로세스 전에 해결해야 한다는 점을 명심해야 합니다. 따라서 작업을 진행할 때 주의를 기울이세요.

GitHub Desktop, GitKraken, Tower, Bitbucket 등 다양한 플랫폼에서 브랜치 제거를 위해 서로 다른 기술을 사용하므로 각 도구와 관련된 고유 절차를 잘 숙지하는 것이 중요합니다.

Git의 맥락에서 브랜치를 제거하는 행위를 고려할 때, 생성 프로세스에 내재된 단순성이 있어 언제든 원활하게 구현할 수 있습니다. 그러나 이와 같은 간편한 생성은 시간이 지남에 따라 사용하지 않는 브랜치가 누적되어 결국에는 제거해야 할 필요성을 야기할 수 있습니다. 따라서 브랜치를 삭제하는 데 필요한 단계를 이해하는 것이 중요한 고려 사항이 됩니다.

왜 브랜치를 삭제해야 하나요?

Git 브랜치를 활용하여 프로젝트를 구성하는 복잡한 절차에 익숙해지는 과정에서 처음에 브랜치를 만들었다가 나중에 불필요한 브랜치였다는 것을 알게 되는 경우가 종종 있습니다. 브랜치는 신속하고 리소스 효율적이며 무시할 수 있는 양의 디스크 공간을 소비하는 최소한의 작업이기 때문에 이러한 상황은 큰 문제가 되지 않습니다.

수많은 Git 기반 개발 프로세스에서 버그 수정과 같은 사소한 작업을 위해 별도의 브랜치를 생성하는 등 광범위한 브랜칭 관행을 사용하는 것이 일반화되었습니다.

브랜치 삭제를 일상적인 작업 루틴에 통합하는 것은 브랜치 생성을 정기적으로 통합하는 것과 마찬가지로 중요하게 여겨야 합니다.

브랜치가 있는 샘플 리포지토리

제공된 컨텍스트에 비추어 다음과 같은 구성 및 조직을 가진 특정 데이터베이스 또는 데이터 저장소와 관련된 예시 사례를 고려해 보겠습니다:

리포지토리는 두 로컬 브랜치, 즉 메인 및 개발 브랜치로 구성되며 각 브랜치는 오리진으로 알려진 원격 서버에 위치한 업스트림 브랜치에 해당하는 추적 브랜치의 역할을 합니다.

이 글도 확인해 보세요:  Reqwest로 Rust에서 HTTP 요청 만들기

효과적인 커뮤니케이션 원칙에 따라 브랜치 개발을 추적하는 것이 때때로 어려울 수 있다는 점을 인식하는 것이 중요합니다.이 문제를 해결하려면 명령줄 인터페이스 또는 선호하는 그래픽 사용자 인터페이스를 사용하여 Git 리포지토리 내의 모든 활성 브랜치에 대한 최신 기록을 유지하는 것이 좋습니다.

명령줄을 사용하여 브랜치 삭제하기

Git에서 브랜치를 삭제하려면 “git branch -d” 명령 뒤에 제거하려는 브랜치 이름을 입력하면 됩니다. 예를 들어 ‘feature-branch’라는 이름의 브랜치를 삭제하려면 터미널이나 명령 프롬프트에 다음 명령을 입력합니다: ‘“bash git branch -d feature-branch “` 그러면 리포지토리에서 지정된 브랜치가 즉시 삭제되고 로컬 또는 원격 브랜치에 있는 해당 브랜치에 대한 모든 참조가 그에 따라 업데이트됩니다.

 git branch (-d | -D) [-r] <branchname>... 

로컬 브랜치를 삭제하는 방법

로컬 브랜치를 제거하는 간단한 방법이 있으며, 모든 변경 사항이 메인 브랜치에 통합되어 있으면 실행된다:

 git branch -d dev 

작업이 성공적으로 완료되면 확인 메시지를 받게 됩니다.

현재 활성 브랜치를 제거하면 다음과 유사한 오류 메시지가 표시되므로 제거할 수 없습니다:

로컬 브랜치에 병합되지 않고 푸시되지 않은 수정 사항이 포함된 경우, 일반적으로 Git은 설계상 해당 브랜치를 삭제할 수 없도록 합니다. 그렇게 하면 전송되지 않은 변경 내용이 손실될 수 있기 때문입니다. 이 글에서 설명한 것처럼 “dev” 브랜치에는 아직 원격으로 호스팅된 브랜치에 전파되지 않은 미해결 변경 사항이 있습니다.

오류 메시지가 전달하는 정보에 따라 -D 플래그를 사용하여 제거를 실행할 수 있습니다.

로컬 브랜치에 해결되지 않은 충돌이 있음에도 불구하고 해당 원격 브랜치가 현재 상태이고 병합되지 않은 경우 로컬 추적 브랜치가 삭제될 수 있습니다. 이 작업을 수행하면 사용자에게 상황을 알리는 알림이 트리거되지만 삭제를 진행할 수 있습니다.

원격 브랜치 삭제 방법

원격 브랜치를 삭제하려면 `git push` 명령과 함께 삭제용 `-d` 플래그를 사용해야 합니다. 그런 다음 원격 리포지토리의 식별자(보통 ‘origin’ 형식)와 특정 브랜치 이름을 입력합니다.

GitHub 데스크톱으로 로컬 및 원격 브랜치 삭제

명령줄 git 프로그램과 달리 GitHub €™의 데스크톱 앱 을 사용하면 활성 브랜치만 삭제할 수 있습니다.브랜치 메뉴에서 삭제 옵션을 선택하고 확인하여 이 작업을 수행할 수 있습니다:

안타깝게도 Git 자체에서 이 기능을 지원하더라도 GitHub 데스크톱에서는 “메인” 브랜치와 같은 기본 브랜치의 삭제를 허용하지 않습니다. 실제로 기본 브랜치가 현재 애플리케이션에서 활성화되어 있으면 메뉴에서 삭제 옵션이 비활성화됩니다.

이 글도 확인해 보세요:  녹 매크로: 매크로를 사용하여 코드를 개선하는 방법

선택한 브랜치가 원격 리포지토리와 연결되어 있는 것으로 확인되면 로컬 브랜치 외에 해당 원격 브랜치도 제거할 수 있는 기능을 GitHub Desktop에서 제공합니다.

GitKraken을 사용하여 브랜치 삭제하기

GitKraken 왼쪽 사이드바에 리포지토리 €&#153의 로컬 브랜치 및 원격 브랜치가 표시됩니다. 각각을 개별적으로 삭제해야 합니다.

먼저 원하는 브랜치 이름에 커서를 가져간 다음 브랜치 이름 옆에 세로로 배열된 점 3개로 표시된 브랜치 작업 메뉴를 클릭합니다. 메뉴에 액세스한 후 사용 가능한 선택 항목에서 “ 삭제” 옵션을 선택합니다. 그러면 리포지토리에서 지정된 브랜치를 제거하는 프로세스가 시작됩니다.

삭제 프로세스를 실행하면 해당 작업이 곧 되돌릴 수 없음을 알리는 알림이 표시됩니다. 영구 삭제를 진행하려면 제공된 ‘삭제’ 옵션을 활용하세요:

Git 명령줄 인터페이스의 고유한 동작을 준수하기 위해서는 삭제하려는 브랜치와 다른 브랜치로 미리 변경하는 것이 필수적입니다. 그렇게 하지 않으면 오류 메시지가 표시됩니다:

타워

를 사용하여 로컬 및 원격 브랜치 삭제하기 타워 로 브랜치 삭제하기는 GitKraken으로 브랜치 삭제하는 것과 매우 유사합니다. 앱의 왼쪽 패널에 로컬 브랜치와 원격 브랜치가 표시됩니다. 브랜치를 마우스 오른쪽 버튼으로 클릭하고 컨텍스트 메뉴에서 삭제 옵션을 선택합니다:

이 방법의 특징은 확인 즉시 원격 브랜치와 로컬 브랜치를 동시에 제거할 수 있다는 것입니다:

GitHub에서 브랜치 삭제

GitHub는 설계상 원격 리포지토리로만 사용되므로 플랫폼에서 호스팅되는 모든 브랜치는 본질적으로 원격 브랜치로 만들어집니다. GitHub 사이트를 통해 브랜치를 제거하려면 다른 곳에서 설명한 대체 방법 중 하나를 사용하여 관련 로컬 브랜치를 제거해야 합니다.

GitHub 플랫폼을 통해 기본 브랜치를 제거하려는 시도는 시스템에서 생성된 오류 알림이 표시되는 것에서 알 수 있듯이 설계상 금지되어 있습니다.

먼저 ‘코드’ 헤더 아래에 있는 ‘브랜치’ 링크를 클릭하여 사용 가능한 브랜치 목록에 액세스합니다. 그런 다음 시스템에서 제거하려는 특정 브랜치를 식별합니다. 특정 브랜치가 식별되면 휴지통 모양의 아이콘이 있는 ‘브랜치 삭제’ 버튼을 찾습니다. 마지막으로 이 버튼을 클릭하여 선택한 브랜치에 대한 제거 프로세스를 확인합니다.

이 글도 확인해 보세요:  웹 개발을 위한 가장 인기 있는 8가지 백엔드 프레임워크

병합된 변경 사항을 확인할 수 있는 메커니즘이 없으므로 GitHub는 즉시 브랜치를 삭제합니다. 그럼에도 불구하고 원격 브랜치를 계속 상징할 것이므로 이러한 결과는 예상할 수 있습니다.

삭제 아이콘을 클릭하면 실수로 브랜치를 삭제한 경우 사용자의 편의를 위해 복원 버튼이 나타납니다. 하지만 이 기능은 실행 취소 기능일 뿐이며 일시적으로만 사용할 수 있다는 점에 유의하세요. 현재 페이지를 새로고침하거나 나가면 복원 옵션에 더 이상 액세스할 수 없습니다.

Bitbucket에서 로컬 및 원격 브랜치 삭제

비슷한 맥락에서 Bitbucket과 GitHub 모두 리포지토리의 구성 옵션 내에서 “메인”이라고 하는 미리 지정된 기본 브랜치를 삭제하는 것을 금지하고 있습니다. 그러나 사용자는 각 브랜치 이름 옆에 있는 작업을 통해 ‘브랜치’ 페이지에 표시되는 모든 추가 브랜치를 유연하게 제거할 수 있습니다.

물론 여러 브랜치를 삭제하는 것은 광범위한 리팩토링 또는 재구조화 작업을 수행할 때 리포지토리를 간소화하는 효율적인 방법입니다. 여러 브랜치를 동시에 삭제하면 코드베이스를 효과적으로 관리하고 유지하면서 불필요한 혼란을 없앨 수 있습니다.

브랜치 삭제는 일반적인 Git 워크플로우의 일부

로컬, 원격, 추적 브랜치를 여러 개 다룰 때와 같은 특정 상황에서는 Git 브랜치가 복잡해질 수 있지만, 그럼에도 불구하고 대부분의 개발자가 일상에서 필수적으로 사용하는 요소입니다. 실제로 프로젝트를 효과적으로 관리하고 일관된 버전을 유지하기 위해 로컬 브랜치를 자주 만들고 삭제해야 하는 경우가 많습니다. 따라서 소프트웨어 개발의 성공을 위해서는 Git 워크플로우의 기본적인 측면에 익숙해지는 것이 중요합니다.

브랜치 삭제 절차를 간소화하기 위해 삭제 절차에 관련된 특정 단계를 기억하는 데 필요한 최소한의 노력으로 리포지토리에서 브랜치를 쉽게 제거할 수 있는 별칭을 설정할 수 있습니다.

By 김민수

안드로이드, 서버 개발을 시작으로 여러 분야를 넘나들고 있는 풀스택(Full-stack) 개발자입니다. 오픈소스 기술과 혁신에 큰 관심을 가지고 있고, 보다 많은 사람이 기술을 통해 꿈꾸던 일을 실현하도록 돕기를 희망하고 있습니다.