강의/Git & Github 실무 활용 완벽 가이드

Git 브랜치 개념과 활용

studylida 2025. 2. 3. 12:16

1. 브랜치란?

브랜치는 독립적인 작업 환경을 제공하여 여러 변경 사항을 동시에 진행할 수 있도록 합니다.

주요 특징

  • 각 브랜치는 독립적으로 커밋을 저장
  • 변경 사항이 다른 브랜치에 영향을 주지 않음
  • 필요할 때 병합(Merge)하여 통합 가능

브랜치를 사용하면 기능 개발, 버그 수정, 실험적 변경을 안전하게 관리할 수 있습니다.


2. 마스터 브랜치(Master Branch)

Git을 초기화하면 자동으로 생성되는 기본 브랜치입니다.

$ git init
$ git status
# On branch master

특징

  • Git에서 특별한 기능은 없지만, 공식적인 코드 기준점으로 사용됨
  • 최신 Git에서는 main이 기본 브랜치로 설정되는 경우가 많음

마스터 브랜치는 필요에 따라 변경하거나 삭제할 수 있습니다.


3. HEAD란?

HEAD는 현재 작업 중인 브랜치를 가리키는 포인터입니다.

$ git status
# On branch master
  • HEAD는 특정 브랜치의 최신 커밋을 참조
  • 브랜치를 변경하면 HEAD도 자동으로 이동

4. 브랜치 목록 확인

현재 저장소의 브랜치를 확인하려면:

$ git branch

출력 예시:

* master
  feature-login
  bugfix-header

현재 작업 중인 브랜치 앞에는 *이 표시됩니다.


5. 브랜치 생성 및 전환

브랜치 생성

$ git branch feature-login  # 브랜치 생성 (전환되지 않음)

브랜치 전환

$ git switch feature-login  # 브랜치 전환

한 번에 생성과 전환을 하려면:

$ git switch -c feature-login
  • 브랜치는 생성된 시점의 커밋을 기반으로 작업이 시작됨
  • 한 브랜치에서 한 작업만 진행하는 것이 좋음

6. 브랜치 전환 시 유의사항

스테이징되지 않은 변경 사항이 있으면 브랜치 전환이 불가능할 수 있음.
해결 방법

  1. 변경 사항을 커밋하거나 스테이징
  2. 변경 사항을 스태시로 저장 (추후 적용 가능)
$ git stash  # 변경 사항 임시 저장
$ git switch 다른브랜치
$ git stash pop  # 스태시 적용

7. 브랜치 삭제 및 이름 변경

브랜치 삭제

$ git branch -d feature-login  # 병합된 브랜치 삭제
$ git branch -D feature-login  # 강제 삭제 (병합되지 않은 경우)

브랜치 이름 변경

$ git switch feature-login  # 변경할 브랜치로 이동
$ git branch -m new-feature  # 새 이름으로 변경

8. Git에서 브랜치와 HEAD의 저장 방식

HEAD는 현재 작업 중인 브랜치를 가리킴

$ cat .git/HEAD
ref: refs/heads/master

각 브랜치는 특정 커밋을 가리킴

$ cat .git/refs/heads/master
93ed...
  • 브랜치는 최신 커밋을 가리키는 포인터
  • HEAD는 현재 작업 중인 브랜치를 참조

9. 브랜치 실습: 해리포터 패트로누스 예제

연습자료

 

저장소 초기화 및 기본 설정

$ mkdir Patronus && cd Patronus
$ git init
$ touch patronus.txt
$ git add patronus.txt
$ git commit -m "Add empty patronus file"

브랜치 생성 및 이동

$ git branch harry
$ git branch snape
$ git switch harry
$ echo "Harry: Stag" > patronus.txt
$ git add patronus.txt
$ git commit -m "Add Harry’s stag patronus"

새로운 브랜치 생성 및 변경 사항 적용

$ git switch -c lily
$ sed -i '' 's/Snape/Lily/' patronus.txt
$ git add patronus.txt
$ git commit -m "Add Lily’s doe patronus"

브랜치 목록 확인 및 삭제

$ git branch
$ git branch -D snape

10. Git 브랜치 요약

명령어 설명
git branch 현재 브랜치 목록 확인
git branch <브랜치> 새 브랜치 생성
git switch <브랜치> 브랜치 전환
git switch -c <브랜치> 브랜치 생성 후 전환
git branch -d <브랜치> 병합된 브랜치 삭제
git branch -D <브랜치> 병합되지 않은 브랜치 강제 삭제
git branch -m <새이름> 브랜치 이름 변경