git branch 생성하고 전환하는 법: 브랜치 기본 명령어 정리
git branch 생성하고 전환하는 법, 기본부터
브랜치는 메인 코드를 건드리지 않고 새 기능이나 실험을 따로 진행하는 "작업 분기"입니다. git branch 생성하고 전환하는 법을 익히면 협업과 실험이 안전해집니다. 최신 Git에서는 브랜치를 만들고 옮길 때 git switch를, 예전에는 git checkout을 썼는데, 이 글에서 둘 다 정확히 정리합니다.
먼저 현재 브랜치 확인
# 브랜치 목록 보기 (현재 브랜치에 * 표시)
git branch
# 원격 포함 전체 보기
git branch -a해결 1: 브랜치 생성하고 바로 전환하기
가장 많이 쓰는 패턴은 생성과 전환을 한 번에 하는 것입니다.
# 최신 Git (권장)
git switch -c feature/login
# 예전 방식 (동일 동작)
git checkout -b feature/login-c(switch) 또는 -b(checkout)는 "새로 만들면서 그 브랜치로 이동"을 의미합니다.
해결 2: 기존 브랜치로 전환하기
# 최신 Git
git switch main
# 예전 방식
git checkout main| 작업 | 최신(switch) | 예전(checkout) |
|---|---|---|
| 브랜치 이동 | git switch 이름 | git checkout 이름 |
| 생성+이동 | git switch -c 이름 | git checkout -b 이름 |
| 이전 브랜치로 | git switch - | git checkout - |
switch는 브랜치 이동 전용이라 의미가 명확합니다. checkout은 파일 복구 등 다른 기능도 겸해 헷갈릴 수 있어 최신 Git에서는 switch를 권장합니다.
해결 3: 만든 브랜치를 원격에 올리기
새 브랜치를 처음 push할 때는 업스트림을 함께 지정합니다.
git push -u origin feature/login-u를 한 번 붙이면 이후엔 git push만으로 동작합니다.
해결 4: 원격 브랜치를 내 로컬로 가져오기
동료가 만든 원격 브랜치에서 작업하려면 가져와야 합니다.
# 원격 정보 갱신
git fetch
# 원격 브랜치로 전환 (자동으로 추적 브랜치 생성)
git switch feature/login해결 5: 브랜치 삭제하고 이름 바꾸기
# 병합된 브랜치 안전 삭제
git branch -d feature/login
# 병합 안 된 브랜치 강제 삭제 (주의: 작업 유실 가능)
git branch -D feature/login
# 현재 브랜치 이름 변경
git branch -m new-name
# 원격 브랜치 삭제
git push origin --delete feature/login경고: -D(대문자)는 병합되지 않은 커밋이 있어도 강제로 삭제합니다. 작업이 사라질 수 있으니 정말 버릴 때만 사용하세요. -d(소문자)는 안전장치가 있어 미병합 브랜치를 막아줍니다.
주의점 정리
- 전환 전 변경 사항은 커밋하거나
git stash로 잠시 보관하세요 - 커밋 안 한 변경이 있으면 전환이 막히거나 따라올 수 있습니다
- 브랜치 이름은
feature/,fix/같은 규칙을 쓰면 협업이 편합니다
# 전환 전에 작업 임시 보관
git stash
git switch main
# 돌아와서 복원
git switch feature/login
git stash pop자주 묻는 질문
Q1. switch와 checkout 중 무엇을 써야 하나요?
브랜치를 만들고 옮기는 목적이라면 git switch를 권합니다. 의미가 명확하고 실수가 적습니다. checkout은 여전히 동작하지만 파일 복구 등 여러 기능을 겸해 입문자가 헷갈리기 쉽습니다. 오래된 자료를 볼 때를 대비해 checkout 형태도 알아두면 좋습니다.
Q2. 브랜치를 전환하려는데 "changes would be overwritten"이라고 막혀요.
현재 브랜치에 커밋하지 않은 변경이 있어서입니다. 먼저 git commit으로 저장하거나, 임시로 git stash에 보관한 뒤 전환하세요. 전환 후 git stash pop으로 복원할 수 있습니다.
Q3. 브랜치를 삭제했는데 되살릴 수 있나요?
삭제 직후라면 가능성이 높습니다. git reflog에서 그 브랜치의 마지막 커밋 해시를 찾아 git switch -c 브랜치이름 해시로 복구하세요. 단, 시간이 지나 정리(gc)되면 어려워지므로 빨리 시도하는 것이 좋습니다.