Original article: How to Delete a Git Branch Both Locally and Remotely

깃 브랜치를 삭제하는 법은 간단하다. 로컬과 원격 두군데에서 모두 브랜치를 삭제하는 법을 알아보자.

간단히 요약하자면 아래와 같다.

// 로컬에서 브랜치 삭제하기 명령어 
git branch -d localBranchName(로컬의 브랜치 이름)

// 원격에서 브랜치 삭제하기 명령어
git push origin --delete remoteBranchName(원격 브랜치 이름)

브랜치를 삭제해야 하는 경우

보통 하나의 깃 리포(repository)만 해도 브랜치가 여러개 있다. 브랜치를 이용하면 메인 코드베이스를 건드리지 않으면서 다양한 기능들이나 여러가지 버그들을 픽스할 수 있다.

보통의 경우 리포는 하나의 메인 브랜치에 메인 코드베이스가 있고 개발자들은 각자 하는 일을 위해서

브랜치를 만든다.

대부분의 경우 내가 개발하고 있는 피처가 완성됐다면 브랜치를 삭제하는 것이 좋다.

로컬에서 브랜치 삭제하기

내가 현재 있는 작업 브랜치는 삭제 할 수 없다. 먼저 삭제하지 않을 다른 브랜치로 체크아웃을 한다.

예를 들면 메인 브랜치로 체크아웃 한다.

git checkout main

브랜치 삭제 명령어

git branch -d <branch>

예를 들면 이런식이다 (삭제하고 싶은 브랜치 이름: fix/authentication).

git branch -d  fix/authentication

-d 옵션으로는 브랜치가 이미 원격에 푸쉬되고 병합 되었을때만 삭제할 수 있다.

-D 옵션을 쓰면 푸쉬나 병합이 아직 안된 상태에서도 강제로 삭제할 수 있다.

이제 이 브랜치는 로컬에서 삭제됐다.

원격에서 브랜치 삭제하기

원격에서 브랜치를 삭제하는 명령어

git push <remote> —delete <branch>

예를 들어서 삭제하고 싶은 원격 브랜치 이름이 fix/authentication 이라면

git push origin —delete fix/authentication

그러면 이제 이 브랜치는 원격에서 삭제됐다.

더 짧은 버전의 명령어도 있다.

git push <remote> :<branch>

이렇게 쓰면 된다.

git push origin :fix/authentication

혹시 이런 에러메세지가 뜬다면 다른 사람이 이미 그 브랜치를 삭제한 경우일 수도 있다.

error: unable to push to unqualified destination: remoteBranchName The destination refspec neither matches an existing ref on the remote nor begins with refs/, and we are unable to guess a prefix based on the source ref. error: failed to push some refs to ‘git@repository_name'

이런 경우 브랜치 목록 동기화를 위해 이 명령어를 실행한다.

git fetch -p

-p 옵션은 가지치기(prune)를 한다는 뜻이다. 패치(fetch)를 하면 원격에서 이미 삭제된 브랜치는 목록에서 없어진다.

혹시 이 포스트가 도움이 되었다면, 우리 프리코드캠프(비영리)에는 8000개가 넘는 실직적 도움이 되는 튜토리얼이 가득해요. 모두 무료이고 광고도 없어요. 친구들에게 알려주세요. 😉