원격 브랜치 삭제
로컬에서 원격 저장소의 브랜치를 삭제할 수 있습니다.
항상 그렇듯이 삭제는 신중하게 판단해야 합니다.
혹, 여러 사람이 함께 사용중인 브랜치라면 삭제해서는 안될 수 있습니다.
원격 브랜치를 삭제하는 방법은 push 명령어와 -d 옵션 또는 --delete 옵션을 함께 사용합니다.
사용법은 다음과 같습니다.
# 원격 브랜치 삭제
$ git push <원격 저장소 이름> -d(또는 --delete) <원격 저장소 브랜치>
예를 들어, 우리는 <원격 저장소 이름>을 origin이라고 설정했으며,
원격 저장소의 bugfix2 브랜치를 삭제하려면 $ git push origin --delete bugfix2 라고 실행합니다.
실제 실행 화면은 다음과 같습니다.
GitHub에서 확인 결과 삭제된 것을 볼 수 있습니다.
원격 브랜치 삭제 시 동기화 문제
서버(원격) 저장소에서 브랜치를 생성합니다.
GitHub에서 임의로 test라는 브랜치를 만들어 보겠습니다.
GitHub의 저장소 페이지에서 다음과 같이 ① → ② → ③ 의 순서로 진행해 test라는 브랜치를 만들었습니다.
그런 다음, 생성한 원격 브랜치 test의 정보를 로컬 저장소로 가져오겠습니다.
브랜치 정보를 가져올 때에는 git fetch 명령을 사용합니다.
# 원격 브랜치 정보 가져오기
$ git fetch
fetch 명령은 서버 저장소의 업데이트 된 내용을 Git으로 내려 받습니다.
파일의 변경 사항이 있다면, fetch 후 병합(merge)까지 진행해야 합니다.
하지만, 우리는 업데이트 된 브랜치 정보만 내려 받으므로 병합은 하지 않습니다.
GitHub에서 test라는 브랜치를 생성하고,
다음과 같이 로컬 저장소에서 git branch -r 을 통해 원격 브랜치 목록을 확인하더라도 test 원격 브랜치는 확인되지 않습니다.
이후 $ git fetch 를 통해 내려 받으면, [new branch] test 를 origin/test 로 내려 받음을 확인할 수 있습니다.
그리고 다시 $ git branch -r 로 원격 브랜치 목록을 확인하면 origin/test 가 확인됩니다.
현재 상태는 다음 그림과 같이 서버(원격) 저장소와 로컬 저장소의 브랜치 목록이 매칭되어 동기화 되어 있습니다.
여기서 GitHub에서 다음과 같이 다시 test 브랜치를 삭제해 보겠습니다.
삭제 결과, GitHub에서는 다시 master와 hotfix 브랜치만 존재합니다.
로컬 저장소의 원격 브랜치 목록을 확인해 봅니다.
orgin/test 가 그대로 남아 있음을 알 수 있습니다.
$ git fetch 를 실행 후 다시 원격 브랜치 목록을 확인합니다.
위 화면과 같이 fetch를 실행 후 아무런 메시지도 나오지 않으며,
원격 브랜치 목록을 확인했으나 그대로 origin/test 라는 원격 브랜치가 남아 있습니다.
앞서 배운 대로 push 명령어와 -d 옵션을 사용해 삭제해 보겠습니다.
다음과 같이 원격 브랜치의 경로를 찾을 수 없어 삭제할 수 없다는 메시지와 함께 에러가 발생합니다.
이렇게 서버(원격) 저장소의 브랜치와 로컬 저장소의 브랜치 정보가 일치하지 않아 발생한 문제로 이럴 경우 fetch를 받을 때 -p 옵션과 함께 받아야 합니다.
# 트래킹 브랜치가 더 이상
# 원격 저장소에 있지 않을 경우
# 브랜치 정보 가져오기
$ git fetch -p(또는 --prune) <원격 저장소 이름>
다음의 실행 화면과 같이 $ git fetch -p origin 명령을 통해 동기화 됨을 알 수 있습니다.
이상으로 원격 브랜치를 삭제하고 삭제시에 발생할 수 있는 오류 상황을 살펴봤습니다.
감사합니다.
[전자책]Basic Git - 예스24
SVN을 사용할 때도 그랬지만, 버전 관리 시스템을 사용하면서 충분히 알지 못한 상태에서 당장 필요한 기능만을 익혀서 사용하는 경우가 대부분이었습니다. 어떻게 동작하는 지에 대한 이해는
www.yes24.com
상기 배너는 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
'코딩해보니 > Git' 카테고리의 다른 글
[Git_53] 태그(Tag) - 생성하기 (0) | 2023.05.11 |
---|---|
[Git_52] 태그(Tag) - 사용법 (관련 명령어) (0) | 2023.05.10 |
[Git_50] 원격 브랜치를 로컬 저장소로 복사 & 업스트림 연결하기 (0) | 2023.05.04 |
[Git_49] 원격 브랜치 - 로컬 브랜치 이름과 원격 브랜치 이름을 다르게 설정하기 (0) | 2023.04.27 |
[Git_48] 서버(원격) 저장소 - 원격 브랜치의 이해 (0) | 2023.04.25 |