소스코드 버전 관리: 깃(Git) #5 브랜치 조작

Jiyoung Park·2020년 12월 28일
0

Git & GitHub

목록 보기
5/5
post-thumbnail

⚡ 브랜치 사용 예시 ⚡

  • 새로운 기능 추가
  • 버그 수정
  • 병합과 리베이스 테스트
  • 이전 코드 개선
  • 특정 커밋으로 돌아가고 싶을 때

브랜치 관련 명령어

명령어내용
git branch [-v]로컬 저장소의 브랜치 목록 확인
-v 옵션 사용시 마지막 커밋도 함께 표시한다.
⚡ 브랜치 중 이름 왼쪽에 *가 붙어있으면 HEAD 브랜치
git branch [-f] <브랜치 이름> [커밋체크섬]새로운 브랜치 생성.
커밋체크섬 값을 주지 않으면 HEAD로부터 브랜치 생성
-f 옵션 : 이미 있는 브랜치를 다른 커밋으로 옮기고 싶을 때 사용
⚡ 커밋체크섬 = 해시 = 커밋아이디
git branch -r[v]원격 저장소에 있는 브랜치를 확인할 때 사용
-v 옵션 : 커밋 요약 확인 가능
git checkout <브랜치 이름>특정 브랜치로 체크아웃 할 때 사용.
브랜치 이름 대신 커밋체크섬 사용 가능하긴 함
git checkout -b <브랜치 이름> <커밋체크섬>특정 커밋에서 브랜치를 새로 생성하고 동시에 체크아웃 진행
git merge <대상 브랜치>현재 브랜치와 대상 브랜치를 병합할 때 사용
병합커밋(merge commit)이 생기는 경우가 많다.
git merge --abortmerge 명령 취소
git rebase <대상 브랜치>내 브랜치의 커밋들을 대상 브랜치에 재배치.
히스토리가 깔끔해지나 사용시 주의해야 한다.
⚡ 원격저장소에 푸시한 브랜치는 rebase하지 않는것이 원칙
git rebase --continue충돌로 중단된 rebase 재개
git branch -d <브랜치 이름>특정 브랜치를 삭제할 때 사용.
HEAD 브랜치나 병합되지 않은 브랜치는 삭제 불가
git branch -D <브랜치 이름>브랜치를 강제로 삭제하는 명령어
-d로 삭제할 수 없는 브랜치를 강제로 지우고 싶을때 사용
git reset --hard <이동할 커밋체크섬>현재 브랜치를 지정한 커밋으로 옮기며 작업 폴더의 내용도 함께 변경된다.
HEAD~<숫자>HEAD~는 HEAD의 부모 커밋, HEAD~2는 할아버지 커밋
HEAD~n은 n번째 위쪽 조상이라는 뜻
HEAD^<숫자>HEAD^는 HEAD의 부모 커밋, HEAD^2는 두번째 부모를 가리킨다.
병합 커밋처럼 부모가 둘 이상인 커밋에서만 의미있음

💫HEAD에 대해서 알아야 할 점 💫

  • HEAD는 현재 작업 중인 브랜치를 가리킨다.
  • 브랜치는 커밋을 가리키므로 HEAD도 커밋을 가리킨다.
    ⇒ HEAD : 현재 작업 중인 브랜치의 최근 커밋

배포 전 태깅 명령어

명령어내용
git tag -a -m <간단한 메시지> <태그 이름> [브랜치 또는 체크섬]-a : 주석 있는(annotated)태그 생성
⚡ 메시지와 태그 이름은 필수, 브랜치 이름 생략시 HEAD에 태그 생성
git push <원격저장소 별명> <태그 이름>원격 저장소에 태그를 업로드


버그 발생시 처리 시나리오

  1. (옵션) 오류가 없는 버전(주로 Tag가 있는 커밋)으로 롤백
  2. [master] 브랜치로부터 [hotfix] 브랜치 생성
  3. 소스코드 수정 /테스트 완료
  4. [master] 브랜치로 병합 (Fast-forward) 및 배포
  5. 개발중인 브랜치에도 병합 (충돌 가능성 높음)

  • 참고서적: 팀개발을 위한 Git, GitHub 시작하기 (정호영, 진유림 저)
profile
병아리 분석가

0개의 댓글