Critical

  • 브랜치는 무엇이고 왜 사용하는가?
  • HEAD에 대한 이해
  • 명령어 git branch/switch/checkout

 

Important

  • 브랜치 삭제와 이름 변경
  • 브랜치 이름 (master vs main)

 

Nice To Have

  • HEAD & Refs behind the scenes

 

브랜치도 커밋처럼 매일 또는 자주 다루게 될 것이다.

 

커밋은 고유의 해시를 가지고 부모 커밋 하나를 참조하고 있다.

 

어떤 팀에서 각각 진행하는 작업의 내용이 진척도가 서로 다르고 작업 내용이 추후 적용된다고 했을 때, 순차적인 커밋은 불가능하다고 볼 수 있다.

이 때, 브랜치로 작업을 분기시켜서 별도로 진행하다가 추후 합칠 수 있다.

 

작업은 항상 브랜치 위에 존재한다.

 

master(main) 브랜치는 실제로 특별한것은 없지만 많은 팀과 사람들이 프로젝트 코드 베이스의 원본처럼 취급한다.

 

어떤 브랜치에서 작업한 내용은 다른 브랜치에 영향을 미치지 않는다.

 

 

HEAD

 

브랜치 생성에 앞서 알아야 할 개념.

각 브랜치는 브랜치 레퍼런스를 가지고 있으며 HEAD는 이 브랜치 레퍼런스를 가리키면서 전환하게 된다. 일종의 포인터이다.

 

git branch

저장소에 존재하는 브랜치 목록을 보여준다.

-d, --delete : 브랜치를 삭제한다. checkout했거나 현재 보고있는 브랜치는 삭제가 안되므로 다른 브랜치로 이동해서 삭제해야 한다.

-m, --move : 브랜치의 이름을 재설정한다. 이름을 변경하려는 브랜치로 이동해야 한다.

 

git branch <branch-name>

HEAD가 현재 가리키는 브랜치에 새 브랜치를 생성한다.

 

git switch

브랜치 간에 이동을 한다. (HEAD가 가리키는 레퍼런스 전환)

-c : 브랜치 생성과 이동을 동시에 한다.

 

git checkout

브랜치 간에 이동하거나 작업 트리를 복구시키기 위해 사용된다.

# 둘은 서로 동일하다
git switch -c main
git checkout -b main

 

* 스테이징 되지 않은 변경사항으로 브랜치 전환

커밋되지 않은 내용이 있는 상태에서 브랜치 변경시 내용이 사라진다. 그렇기 때문에 변경 시도시 커밋하거나 임시로 백업(스태시) 하라고 알려준다.

가급적 변경사항을 만들 때마다 브랜치 이동 전에 항상 커밋할 것을 권장한다.

 

+ Recent posts