브랜치(Branch) 삭제
브랜치를 병합한 후에는 병합한 브랜치를 일반적으로 삭제합니다.
앞서도 보셨지만 master도 수정되었는데,
3-way방식으로 병합 후에는
testbranch1에는 master가 수정한 사항은 반영이 되어 있지 않습니다.
그래서 추후 혼선을 없애기 위해서
병합한 후에 브랜치는 삭제하는 것이 일반적입니다.
삭제 후 필요하다면 다시 브랜치를 생성하는 것이 낫습니다.
브랜치 삭제 방법은 branch 명령어에 -d 옵션을 사용합니다.
사용법은 다음과 같습니다.
# 브랜치 삭제하기
$ git branch -d <브랜치 이름>
브랜치를 삭제해 보겠습니다.
$ git branch -d testbranch1을 실행한 결과는 다음과 같습니다.
정상적으로 삭제되었다면
“Deleted branch testbranch1”이라는 메시지를 확인할 수 있습니다.
$ git branch -v로 현재 브랜치 목록을 확인합니다.
-d 옵션으로 브랜치를 삭제할 수 있으나,
병합하지 않은 브랜치는 -d 옵션으로 삭제할 수 없습니다.
병합하지 않은 브랜치는 -D 옵션을 사용해 강제적으로 삭제를 진행해야 합니다.
소스트리에서는 이를 구분하지 않고 쉽게 브랜치를 삭제할 수 있습니다.
삭제하고자 하는 브랜치에 마우스를 가져가서
마우스 오른쪽 버튼을 클릭하면 나오는 팝업 메뉴에서
“(브랜치이름) 삭제” 메뉴를 클릭하면 삭제할 수 있습니다.
하지만, 소스트리에서도 오류 메시지 창을 띄우면서 삭제할 수 없는 경우가 있습니다.
이럴 경우에는 -D 옵션을 사용해 삭제를 진행해야 합니다.
다음은 소스트리에서 브랜치를 삭제하는 예입니다.
브랜치(Branch) 이름 변경
생성한 브랜치는 언제든지 이름을 변경할 수 있습니다.
이름 변경은 -m 옵션을 사용하며, 사용법은 다음과 같습니다.
# 브랜치 이름 변경하기
$ git branch -m <변경하고 싶은 브랜치 이름> <새 브랜치 이름>
<변경하고 싶은 브랜치 이름>은
말 그대로 이름을 변경하고 싶은 브랜치를 지정하는 것입니다.
<새 브랜치 이름>은 새로운 브랜치 이름을 입력하면 됩니다.
가령, hotfix 브랜치 이름을 bugfix로 변경하고 싶다면,
$ git branch -m hotfix bugfix라고 하면 됩니다.
다음 화면이 그 실행 예를 보여주고 있습니다.
$ git branch 명령으로 현재 브랜치 목록을 확인했으며,
$ git branch -m hotfix bugfix 명령으로
hotfix 브랜치를 bugfix로 이름을 변경한 후
다시 $ git branch로 목록을 확인해 변경되었음을 확인하였습니다.
소스트리에서도 쉽게 변경할 수 있습니다.
왼쪽 사이드 메뉴에서 브랜치 목록을 확인하고
변경하고자 하는 브랜치에 마우스 오른쪽 버튼을 클릭하면
나타나는 팝업 메뉴에서 “<브랜치명> 이름 변경...” 메뉴를 클릭합니다.
아래는 앞서 hotfix를 bugfix로 변경해서
브랜치 이름이 bugfix로 되어 있습니다.
그럼, 다음과 같이 [브랜치 이름 변경]이라는 창이 나타나면서 현재 브랜치 이름이 입력되어 있습니다.
변경할 새 브랜치명을 입력하고, [확인]을 클릭합니다.
저는 다시 hotfix로 입력하고 [확인]을 클릭했습니다.
[확인]을 클릭하면, 이름 변경 창은 사라지고
소스트리 화면에서 왼쪽 브랜치 메뉴에
브랜치 이름이 변경되어 있음을 다음과 같이 확인할 수 있습니다.
터미널 창에서 브랜치 이름을 변경할 수 있는 옵션으로 -M 이 있습니다.
이 옵션은 현재 작업 중인 브랜치 이름을 변경할 때 사용합니다.
앞서 소문자 -m 옵션은 변경하고 싶은 브랜치 이름을 입력했으나,
대문자 -M 옵션은 변경하고 싶은 브랜치 이름을 입력하지 않습니다.
-M 옵션은 현재 작업중인 브랜치가 변경하고 싶은 브랜치 이름이 됩니다.
따라서, 새 브랜치 이름만 -M 뒤에 입력하면 되며, 다음과 같이 사용합니다.
# 현재 작업 중인 브랜치 이름 변경하기
$ git branch -M <새 브랜치 이름>
가령, 현재 작업중인 브랜치가 hotfix라고 한다면,
$ git branch -M bugfix 라고 실행하면
현재 작업 중인 hotfix 브랜치 이름을 bugfix로 변경합니다.
그 예가 다음과 같습니다.
브랜치 작업 시 생각해 볼 부분
지금까지 우리는 hotfix와 testbranch1이라는 두 개의 브랜치를 추가로 생성해서
testbranch1과 master를 병합하고,
병합한 testbranch1 은 삭제해서 hotfix와 master 브랜치 두 개가 남아 있습니다.
소스트리로 확인하면 다음과 같습니다.
그런데, 여기서 우리는 hotfix 브랜치에 대해 한가지 생각해 볼 수 있습니다.
누군가 hotfix라는 브랜치를 만들어서 다른 작업을 하는 동안에
한 번도 커밋을 하지 않아서 HEAD 포인터가 “commit 5”에 머물러 있습니다.
혹은 브랜치를 만들어 놓기만 하고 별다른 수정을 하지 않았습니다.
그러는 동안 master는 아홉 번째 커밋을 하고,
testbranch1과 병합을 해서 10번째 커밋까지 진행된 상태입니다.
이 상황을 모르고 hotfix에서 작업을 누군가 한다면 어떻게 될까요?
이런 상황에서는 hotfix에서 작업을 진행하면 문제가 될 수 있습니다.
이미 서비스되고 있는 코드는
여러 가지 추가 업데이트가 되어 있는 상황이기 때문에
이 상황에서 hotfix에서 작업을 한다는 것은
이전 코드에 추가 작업을 하는 것이기 때문에
이후 병합을 한다고 해도 문제가 발생할 수 있습니다.
그래서 브랜치에서 추가 작업을 할 때는
중간중간 master의 업데이트 상황을 보고 맞춰갈 필요가 있습니다.
hotfix에서 수정한 사항이 없다면,
브랜치를 삭제하고 다시 브랜치를 생성해서 다른 작업을 하는 것이 바람직합니다.
하지만, hotfix에서 조금이라도 수정을 했다면,
master의 작업 내용을 hotfix로 병합해서 작업을 이어갈 수 있습니다.
다시 말해, hotfix 브랜치로 체크아웃한 뒤
$ git merge master를 실행해서 맞춰 갈 수 있습니다.
이러한 상황은 브랜치 작업이 아니더라도
원격 저장소와 함께 협업을 진행할 때
유념해야 할 부분으로 원격 저장소를 학습할 때 비슷한 내용으로 학습하겠습니다.
감사합니다.
'코딩해보니 > Git' 카테고리의 다른 글
[Git_33] 충돌(Conflict) - 해결하기 (0) | 2023.01.15 |
---|---|
[Git_32] 충돌(Conflict) - 충돌이란? & 충돌 상황 만들기 (0) | 2023.01.14 |
[Git_30] 브랜치(Branch) 병합(Merge) (0) | 2023.01.04 |
[Git_29] 브랜치(Branch)와 커밋(Commit) (0) | 2023.01.03 |
[Git_28] 브랜치(Branch) 이동(checkout) (0) | 2022.12.28 |
댓글