INFRA - Git 브랜치 관련 명령어 정리

Problem

Git을 사용해 협업 개발을 하다보면 branch를 생성, 병합, 저장할 일이 많다.
하지만 branch의 개수가 많아지다보면 원격 브랜치(remote branch)와 로컬 브랜치(local branch)를 관리하기가 점점 더 까다로워진다.
이번 포스트에서는 원격 브랜치와 로컬 브랜치를 생성, 병합, 삭제하는 명령어를 정리해본다.

Branch 확인

로컬 브랜치 리스트 확인

$ git branch

리모트 브랜치 리스트 확인

$ git branch -r

로컬과 리모트 브랜치 리스트를 모두 확인

$ git branch -a

Branch 생성

로컬 브랜치 생성

“new-branch” 브랜치를 생성해보자.

# git checkout -b [생성할 브랜치 이름]
$ git checkout -b new-branch 

원격 저장소(repository)의 특정 브랜치(remote branch)를 가져와 로컬 브랜치 생성

원격 저장소의 “feat/menu1”이란 원격 브랜치를 로컬 브랜치로 가져와보자. 원격 브랜치를 표시해주기위해 브랜치 명 앞에 “origin”이 붙는다.

# git checkout -t [원격 브랜치 이름]
$ git checkout -t origin/feat/menu1

만약, 로컬 브랜치 명을 바꾸고 싶다면 다음과 같이 입력한다.

# git checkout -t [생설할 브랜치 이름] [원격 브랜치 이름]
$ git checkout -t new-branch origin/feat/menu1

Branch 이동

로컬 브랜치인 “new-branch”로 이동해보자.

$ git checkout new-branch

Branch 병합

브랜치의 커밋 이력을 하나로 합쳐서 병합

현재 내가 “develop” 브랜치에 checkout 했다고 가정해보자.
만약 “new-branch”라는 브랜치에 개발이 완료되어, “develop” 브랜치에 병합하고 싶은데, “new-branch”의 무수히 많은 커밋 이력들을 하나로 합쳐서 “develop” 브랜치에 병합하고 싶다.
그럴땐 다음과 같이 입력한다.

$ git merge --no-ff new-branch

Branch 삭제

로컬 브랜치 삭제

“new-branch” 브랜치를 삭제하자.

$ git branch -d new-branch

원격 브랜치 삭제

방법1

원격 저장소의 원격 브랜치인 “new-branch”를 삭제하자.

$ git push origin --delete new-branch
방법2

만약 로컬 브랜치인 “new-branch”를 먼저 삭제한 상태라면, push만 해주어도 원격 저장소가 삭제된다.

$ git branch -d new-branch # 로컬 브랜치 삭제
$ git push origin new-branch # 원격 브랜치 삭제 

Branch 이름 변경

로컬 브랜치 이름 변경

로컬 브랜치의 이름을 변경하고 싶을 땐 m 옵션을 사용한다.

$ git branch -m old-branch-name new-branch-name

원격 브랜치 이름 변경

먼저 로컬 브랜치의 이름을 변경한 후 기존 원격 브랜치를 삭제하고 새로운 브랜치를 push하면 된다.

# 기존 원격 브랜치 삭제
$ git push origin :old-branch-name
# 새로운 브랜치를 push (-u 옵션은 upstream 설정으로, --set-upstream 옵션과 동일하다)
$ git push -u origin new-branch-name

Reference

git branch 이름 변경