Code States/TIL

[0321] Git과 버전 관리 시스템 - Git Branch

ki1111m2 2023. 3. 21. 14:10

Git Branch


  • 브랜치란?
    • 독립적으로 어떤 작업을 진행하기 위한 개념
    • 각각의 브랜치는 다른 브랜치의 영향을 받지 않기 때문에, 여러 작업을 동시에 진행할 수 있음
    • 장점
      • 한 소스코드에서 동시에 다양한 작업을 할 수 있게 해줌
      • 소스코드의 한 시점과 동일한 상태를 만들고, 브랜치를 넘나들며 작업을 수행할 수 있음
      • 각각의 브랜치에서 생긴 변화가 다른 브랜치에 영향을 주지 않고 독립적으로 코딩을 진행할 수 있음
    • 분리된 작업 영역(브랜치)에서 변경된 내용들은 다른 브랜치와 병합함으로써 다시 새로운 하나의 브랜치로 모을 수 있음
  • 통합 브랜치(Intergration Branch)
    • 배포될 소스 코드가 기록되는 브랜치
    • 해당 프로젝트의 모든 기능이 정상적으로 작동하는 상태의 소스코드가 담겨 있음
  • 피처 브랜치(Feature Branch, 토픽 브랜치)
    • 기능 추가, 버그 수정과 같이 단위 작업을 위한 브랜치
    • 통합 브랜치로부터 만들어내며, 피처 브랜치에서 하나의 작업이 완료가 되면 다시 통합 브랜치에 병합하는 방식으로 진행됨
  • fast-forward
    • 별도의 커밋을 생성하지 않고 헤드 브랜치가 가리키는 커밋을 바꾸는 작업
    • 만약 별도의 커밋이 있었다면, fast-forward가 아닌 merge commit 방식으로 병합됨(각 브랜치가 줄기처럼 분기한 후 병합의 모양새를 가짐)
  • merge와 rebase의 차이
    • rebase의 원리는 fast-forward와 같음
    • merge의 경우, 변경 내용의 이력이 모두 그대로 남아 있기 때문에 이력이 복잡해짐
    • rebase는 브랜치 배이스를 이동시킨다는 뜻으로, 머지처럼 브랜치 통합을 목적으로 하지만, 특정 시점으로 브랜치가 가리키는 곳을 변경하는 기능을 함
      • git rebase main <이동할 브랜치 이름>

브랜치 명령어 모음


  • 새로운 브랜치 생성
    • git branch <새로운 브랜치 이름>
  • 새로운 브랜치 생성 후 해당 브랜치로 전환
    • git switch -c <새로운 브랜치 이름>
    • git checkout -b <새로운 브랜치 이름>
  • 브랜치 목록 확인
    • git branch
  • 브랜치 목록과 각 브랜치의 최근 커밋 확인
    • git branch -v
  • 브랜치 삭제
    • git branch -d <삭제할 브랜치 이름>
    • git branch -D //병합하지 않은 브랜치를 강제 삭제하는 방법
  • 브랜치 전환
    • git switch <브랜치 이름>
    • git checkout <브랜치 이름>
  • 브랜치 병합
    • master 브랜치로 dev 브랜치를 병합할 때
      • git checkout master
      • git merge dev
  • 로그에 모든 브랜치를 그래프로 표현
    • git log —branches —graph —decorate
  • 아직 커밋하지 않은 작업을 스택에 임시로 저장
    • git stash

코드스테이츠에서 부트캠프를 진행하면서, 제공해준 유어클래스 강의록을 보며 진도를 나간다

이번 강의록은 순서가 잘못되어있는 것 같다..

깃 브랜치의 내용이 먼저 나온 후, 퀴즈와 실습을 진행해야 맞는 것 같은데 뒷부분으로 가있어서 퀴즈와 실습을 진행할 때 혼자 찾아봐야했다

찾아보면서 혼자 깨닫고, 실습을 하면서 많은 오류를 마주치고 무슨 오류인지 무슨 차이인지 알아보고 이해하기 힘들었는데 뒷부분 강의록에 다 나와있는 내용이었다..

혼자 알아보라고 일부러 뒷부분에 둔건가..?

특히 fast-forward와 rebase 때문에 오전시간 내내 골머리를 앓았는데 뒷부분에 이렇게 나와있었다니..