깃허브(4): 브랜치

리린·2021년 8월 26일
0

github

목록 보기
7/8

이론

  1. 가상 폴더
  • 작업 폴더를 실제로 복사하지 않고 가상 폴더로 생성
  • 외부적으로는 물리적인 파일 하나만 있는 것으로 보임
  1. 독립적인 동작
  • 원본 폴더와 분리하여 독립적으로 개발 작업 수행 가능
  1. 빠른 동작
  • 다른 버젼 관리 도구보다 가볍고, 브랜치 전환이 빠름
  • Blob 개념 도입:
    포인트와 유사
    브랜치를 변경할 때 포인터를 이동하여 빠르게 전환
  • 브랜치 명령 사용시 내부적으로 커밋을 하나 생성하여 브랜치로 할당(41바이트 파일)
  1. 요약
  • 브랜치는 공통된 커밋을 가리키는 지점이다
  • 브랜치는 실제 커밋이 추가될 때 만든다.
  • 브랜치는 개발 분기점을 의미한다

실습

  1. 저장소 초기화시 master 브랜치 하나가 자동 생성
  • 메시지
infoh@DESKTOP MINGW64 /e/gitstudy06 (master)
$ git status 
On branch master -------- 브랜치 작업 위치
No commits yet
nothing to commit (create/copy files and use "git add" to track)
  • 깃에서는 현재 작업중인 브랜치를 확인하는 것이 중요

git branch 브랜치이름 커밋id : 브랜치 생성

  1. 커밋 id:
  • 필수는 아니다
  • 현재 head포인터를 기준으로 새로운 브랜치를 생성한다
  1. 브랜치 이름 규칙
  • 시작 불가능: 기호(-), 마침표(.)
  • 포함 불가능:
    연속적인 마침표(..), 빈칸, 공백 문자, 물결(~), 캐럿(^), 물음표(?), 별표(*), 대괄호([ ]) ,아스키 제어 문자는 포함할 수 없습니다.
  • 이름 중복 불가능
  • 예시
infoh@DESKTOP MINGW64 /e/gitstudy06 (master)
$ git branch footer
fatal: A branch named 'footer' already exists.

git branch: 브랜치 목록 확인

  1. -v 옵션/-verbose 옵션:
    브랜치 세부 사항 확인
    (브랜치 이름, 커밋 id, 커밋메시지 )

git rev-parse 브랜치이름: 브랜치가 가리키는 해시 값 확인

git checkout 새로운브랜치이름: 현재 브랜치를 떠나 새로운 브랜치로 들어감

  1. 이론
  • 브랜치가 이동하면 HEAD포인터도 함께 이동한다(HEAD 정보는 항상 변경된 브랜치의 마지막 커밋을 가리킨다. )
  • 워킹디렉토리에 커밋하지 않은 내용이 있다면 브랜치를 바꿀 수 없다.
  1. 메시지
infoh@DESKTOP-MINGW64 /e/gitstudy06 (feature)
$ git checkout footer -------- 브랜치 이동
Switched to branch 'footer'

                                     변경됨
infoh@DESKTOP MINGW64 /e/gitstudy06 (footer)
  1. git checkout -
  • 이전 브랜치로 이동한다
  1. git log --graph --al
    브랜치 흐름도 같이 확인
  • 메시지
infoh@DESKTOP MINGW64 /e/gitstudy06 (footer)
$ git log --graph --all
* commit dcdb1c1fa4ef78bedd8dc13bc267e99391cc9782 (master)
| Author: hojin <infohojin@gmail.com>
| Date:   Sat May 11 18:45:35 2019 +0900
|     master working...
|
* commit d84766c7f87b1d9d234050949c48681ba4e35da8 (HEAD -> footer, feature)
  Author: hojin <infohojin@gmail.com>
  Date:   Sat May 11 17:10:02 2019 +0900
      first
  1. git show-branch --more=10
  • --more 옵션으로 출력될 커밋 개수 제한 가능

브랜치 동작 원리

  • 내가 어느 정도 하고 있었는데, 그 와중에 누가 커밋해버리면 ??
    아하. 그 커밋을 가져오는 거구나.
profile
개발자지망생

0개의 댓글