추천 가젯

Git과 CLI (4) - 브랜치 생성하기

브랜치를 사용하는 경우

  • 새로운 기능 추가

    • master 브랜치에는 정상적으로 동작하는 안정적인 버전의 프로젝트가 저장됨

    • 새로운 기능을 추가할 때는 master 브랜치의 최신 커밋으로부터 브랜치를 생성하여 개발

    • 개발, 코드 리뷰, 테스트까지 모두 완료해서 이상이 없으면 master 브랜치로 병합

  • 버그 수정

    • 버그가 발생하면 master 브랜치로부터 새로운 브랜치를 생성해서 작업함.

    • 브랜치 이름은 hotFix, bugFix 등과 같은 이름 사용

    • 버그 수정이 끝나면 master 브랜치로 병합

  • 병합과 리베이스 테스트

  • 이전 코드 개선

    • 함수의 로직 등을 개선하거나 코드를 변경할 때 주석 처리하고 아래에 새로운 개선 코드를 작성하는 것보다 새로 브랜치를 만들어 사용하는 것이 좋음.

    • 기존의 코드를 아예 삭제하고 과감히 새 코드를 작성함.

    • 다른 브랜치의 이전 커밋에는 잘 돌아가는 코드가 여전히 남아 있기에 문제가 없음.

브랜치 생성 명령어

  • git branch [-v]:

    • 로컬 저장소의 브랜치 목록을 보는 명령으로, -v 옵션으로 마지막 커밋도 함께 표시함.

    • 브랜치 이름 왼쪽에 *가 붙어 있으면 HEAD 브랜치임

  • git vranch [-f] <브랜치이름> <커밋체크섬>:

    • 새로운 브랜치를 생성함. 커밋체크섬 값을 주지 않으면 HEAD로부터 브랜치를 생성함.

    • 이미 있는 브랜치를 다른 커밋으로 옮길 때에는 -f 옵션을 사용함.

  • git branch -r[v]: 원격 저장소(remote의 r)을 보고 싶을 때 사용함.

  • git checkout <브랜치이름>: 특정 브랜치로 체크아웃할 때 사용함.

  • git checkout -b <브랜치이름> <커밋체크섬>: 특정 커밋에서 브랜치를 새로 생성하고 동시에 체크아웃까지 함.

  • git merge <대상브랜치>: 현재 브랜치와 대상 브랜치를 병합할 때 사용함. 병합커밋이 새로 생기는 경우가 많음.

  • git rebase <대상브랜치>: 내 브랜치의 커밋들을 대상 브랜치에 재배치시킴.

  • git branch -d <브랜치이름>: 특정 브랜치를 삭제할 때 사용함. HEAD 브랜치나 병합이 되지 않은 브랜치는 삭제할 수 없음.

  • git branch -D <브랜치이름>: 브랜치를 강제로 삭제하는 명령

기존 두 개의 커밋을 바탕으로 브랜치를 만들고 커밋을 한 다음 마스터 브랜치로 병합해 보겠다.

cd [hello-git-cli 폴더]
# 먼저 작업 폴더로 이동한다.

yegang@yegangs:~/hello-git-cli$ git log --oneline
7240873 (HEAD -> master, origin/master) Second commit
f3d91a3 First commit
# 커밋 로그를 보는 병령어이다. HEAD가 master 브랜치를 가리키고 있다.

yegang@yegangs:~/hello-git-cli$ git branch -v 
* master 7240873 Second commit
# 브랜치 정보를 확인하는 명령어이다.
# * 표시가 있다는 것은 HEAD를 의미한다. HEAD가 master에 있다.

yegang@yegangs:~/hello-git-cli$ git branch mybranch1 # 새 브랜치 생성

yegang@yegangs:~/hello-git-cli$ git branch 
* master
  mybranch1
# 현재 브랜치를 확인하는 명령이다.
# 새로 mybranch1 브랜치가 생성된 것을 확인할 수 있다.
# 아직 체크아웃을 하지 않았으므로 HEAD(*)가 master에 있다. 만약 git branch -b mybranch1 명령을 사용했다면 브랜치를 생성하고 체크아웃까지 했을 것이다.

yegang@yegangs:~/hello-git-cli$ git log --oneline --graph --all --decorate # 변경된 브랜치 확인
* 7240873 (HEAD -> master, origin/master, mybranch1) Secon
d commit
* f3d91a3 First commit

여기서 HEAD는 현재 작업 중인 브랜치를 가리킨다. 브랜치는 커밋을 가리키므로 결과적으로 HEAD는 현재 작업 중인 브랜치의 최근 커밋을 가리킨다.

댓글

가장 많이 본 글