IT탐험

브랜치(branch, checkout) 본문

공부내용정리/Git

브랜치(branch, checkout)

watercase 2021. 12. 26. 07:16
  • 브랜치(branch)는 가상의 또 다른 저장 공간을 만드는 것임
    • 작업 폴더를 실제로 복사하는게 아닌 가상 폴더로 생성하기 때문에 원본 폴더와 분리하여 독립적으로 개발 작업을 수행할 수 있고 브랜치 전환이 빠르게 가능함
    • 'git branch' : 브랜치 목록을 출력함
    • 깃에서 브랜치는 개발 분기점을 의미하고 브랜치 생성 개수에는 제한이 없음
    • 'git branch 브랜치이름 [커밋ID]' : 브랜치를 생성하는데 커밋ID를 생략시 HEAD 포인터를 기준으로 생성함
    • 브랜치 이름에 정해진 명칭은 따로 없지만 협업에서 깃 플로(git flow)에서 정의한 브랜치 이름이 많이 사용됨
      • 항상 유지되는 메인 브랜치
        • master : 제품으로 출시될 수 있는 브랜치
        • develop : 다음 출시 버전을 개발하는 브랜치
      • 일정 기간 동안만 유지되는 보조 브랜치
        • feature : 기능을 개발하는 브랜치
        • release : 이번 출시 버전을 준비하는 브랜치
        • hotfix : 출시 버전에서 발생한 버그는 수정하는 브랜치
    • 'git rev-parse 브랜치이름' : 브랜치의 해시 값(SHA1)을 출력함
    • 'git branch -v' : 브랜치이름, 커밋ID, 커밋메시지를 함께 출력함
    • 'git checkout 브랜치이름' : 브랜치로 이동함
      • 워킹 디렉터리에 커밋하지 않은 내용이 있다면 브랜치를 변경할 수 없음
    • 'git checkout -' : 이전 브랜치로 이동함
    • 'git log --graph --all' : 모든 로그를 출력
  • checkout 명령어로 브랜치가 변경되면 깃은 내부적으로 몇 가지 동작을 수행함
    • 브랜치가 이동하면 HEAD 포인터가 이동한 브랜치의 마지막 커밋을 가리킴
    • 변경된 브랜치로 새로운 작업을 할 수 있도록 워킹 디렉터리를 변경함
  • HEAD 포인터를 기준으로 상대적 위치를 지정할 때 ~ 와 ^ 을 사용함
    • HEAD^^^ / HEAD~~~ : HEAD 기준으로 이전 3개 위치
    • HEAD^3 / HEAD~3 : HEAD 기준으로 이전 3개 위치
  • 'git checkout -b 브랜치이름' : 브랜치의 생성과 이동을 한 번에 처리함
  • 원격 저장소에 생성한 브랜치를 리모트 브랜치라고 함
Comments