본문 바로가기
DevOps/Git

[Git] 브랜치 전략 이해 : branch, checkout, switch, restore, fetch

by okbear3 2025. 4. 19.

프로젝트를 진행하면서 기능을 독립적으로 개발하거나 버그 수정을 따로 진행할 필요가 있을 때, Git의 브랜치 기능을 활용하면 효율적으로 작업할 수 있습니다.
이 글에서는 브랜치를 생성하고 전환하는 기본 명령어인 branchcheckout, 그리고 최신 원격 브랜치 정보를 가져오기 위해 사용하는 fetch에 대해 자세히 살펴보겠습니다.


branch - 브랜치 생성 및 관리

git branch 명령어는 새로운 브랜치를 생성하거나, 기존 브랜치 목록을 확인하고 삭제하는 등 브랜치 관련 작업을 수행할 수 있습니다.

이를 통해 독립적인 작업 영역을 만들어 다양한 기능을 동시에 개발할 수 있습니다.

#로컬 브랜치 목록 확인
git branch

#새로운 브랜치 생성
git branch <브랜치명>
옵션 설명
-m 브랜치 이름 변경
-v 브랜치 목록과 각 브랜치의 최근 커밋 확인
-a / --all 로컬 브랜치와 원격 추적 브랜치를 모두 표시
--merged 현재 체크아웃된 브랜치에 이미 병합된 브랜치들을 목록으로 출력
--no-merged 현재 체크아웃된 브랜치에 병합되지 않은 브랜치들을 목록으로 출력
-d / --delete 병합이 완료된 브랜치를 안전하게 삭제
-D 병합 여부와 상관없이 강제로 브랜치를 삭제
--set-upstream 현재 로컬 브랜치의 원격 추적(upstream) 브랜치를 지정

 

checkout – 브랜치 전환 및 파일 복원

git checkout 명령어는 특정 브랜치로 전환할 때 사용합니다.

또한, 특정 파일의 이전 버전을 복원할 때도 유용하게 사용됩니다.

# 'develop' 브랜치로 전환합니다.
git checkout develop

# 'feature/login' 브랜치를 새로 생성하고 전환합니다.
git checkout -b feature/login
git checkout -b <new_branch> <base_branch>

#실수로 수정된 파일을 마지막 커밋 상태로 복원합니다.
git checkout -- config.json

#--force : 로컬 변경 사항 삭제 및 강제 전환
git checkout -f develop

#모든 변경사항을 취소
git checkout .

위의 예시에서와 같이 git checkout 명령어의 기능이 브랜치간 전환, 워킹 트리의 파일복원 등 다양한 기능을 제공하는 것을 알 수 있습니다.

checkout 명령어를 사용하여 브랜치 간 전환을 진행할 때, 현재 디렉터리에서 커밋 되지 않은 변경사항이 있는 경우 다른 브랜치로 이동할 수 없습니다. 이 경우 stash를 이용하여 변경사항을 임시로 저장 후 브랜치 간 전환을 할 수 있습니다.

 

checkout → switch / restore로 대체

Git 2.23 에서는 너무 많은 기능을 가지고 있는 checkout 명령어를 대신하여 switch, restore 명령어가 도입되었습니다.

  • switch : 브랜치 간 전환
  • restore : 워킹 트리의 파일 복원

 

switch - 브랜치 전환 명령어

git switch 명령어는 브랜치 전환에만 초점을 맞춘 명령어입니다.
보다 직관적인 옵션으로 새 브랜치를 만들고 전환하는 작업도 한 번에 할 수 있습니다.

#브랜치 전환
git switch <브랜치 명>

#새로운 브랜치를 생성하고 전환
git switch -c <브랜치 명>

 

 

restore - 파일 복원 명령어

git restore 명령어는 파일의 변경사항을 특정 커밋 상태로 복원하거나, 스테이징된 변경을 취소할 때 사용되는 전용 명령어로, 파일 복원 작업에 대해 보다 명확한 구문을 제공합니다.

#작업 디렉터리에서 수정된 파일을 마지막 커밋 상태로 복원합니다.
git restore <파일 명>

#스테이징 영역에서 'app.js' 변경을 취소합니다.
git restore --staged app.js

#특정 커밋의 상태로 파일 'index.html'을 복원합니다.
git restore --source=HEAD~2 index.html

 

 

fetch - 원격 브랜치 정보 업데이트

앞선 글에서도 다뤘듯, fetch는 원격 저장소의 커밋과 브랜치 정보를 로컬에 업데이트합니다.
원격 브랜치도 fetch를 통해 확인 가능하며, 아래처럼 사용할 수 있습니다.

git fetch origin
git checkout -b feature/new origin/feature/new

→ 원격 저장소에 있는 브랜치로 부터 새로운 로컬 브랜치를 생성하고, 그 상태로 전환합니다.


Git의 다양한 브랜치 관련 명령어를 활용하면, 복잡한 개발 환경에서도 여러 작업을 병렬로 안전하게 진행할 수 있습니다.
branch로 작업 흐름을 나누고, checkout으로 브랜치를 오가며, fetch를 통해 팀의 작업 상태를 반영하는 일련의 과정은 프로젝트의 안정성과 생산성을 크게 향상시켜줍니다.