오늘 방문 /누적 방문 /완성한 레슨 소개 ↗
SECONDTEAM
Git·GitHub
🔀 레슨

브랜치 감각 — 평행우주에서 실험

본체는 그대로 두고 복제 세계에서 실험해요. 망해도 본체는 무사해요.

① 오늘의 미션
본점은 그대로, 분점에서 신메뉴 실험
반찬가게가 잘 굴러가는데, 마라 떡볶이 같은 위험한 신메뉴를 올려보고 싶어요. 그런데 잘 팔리는 메뉴판을 직접 건드렸다가 손님이 등 돌리면 큰일이죠. 그래서 가게는 '평행우주'를 만드는 능력이 있어요.

본점(main)은 그대로 두고, 똑같이 복제한 분점 우주(브랜치)에서 신메뉴를 실험해요. 망해도 본점은 무사. 성공하면 본점에 합쳐요. 오늘 그 흐름 — branch · checkout -b · merge 를 손에 익힙니다.

설명을 따라 진행하면, 여기서 직접 쳐보게 돼요 👇
~/my-shop
$ _
📚 「브랜치 감각 — 평행우주에서 실험」 레슨 내용 전체 텍스트로 훑어보기
본점은 그대로, 분점에서 신메뉴 실험
반찬가게가 잘 굴러가는데, 마라 떡볶이 같은 위험한 신메뉴를 올려보고 싶어요. 그런데 잘 팔리는 메뉴판을 직접 건드렸다가 손님이 등 돌리면 큰일이죠. 그래서 가게는 '평행우주'를 만드는 능력이 있어요.

본점(main)은 그대로 두고, 똑같이 복제한 분점 우주(브랜치)에서 신메뉴를 실험해요. 망해도 본점은 무사. 성공하면 본점에 합쳐요. 오늘 그 흐름 — branch · checkout -b · merge 를 손에 익힙니다.

git의 '브랜치(branch)'를 우리 가게로 비유하면 무엇에 가장 가까울까요?
맞아요. 브랜치는 본점을 복제한 평행우주예요. 거기서 뭘 하든 본점(main)은 영향이 없어요. 그래서 마음껏 실험할 수 있죠. 두려움 없이 실험하기 — 이게 브랜치의 진짜 가치예요.

먼저 지금 가게에 어떤 우주(브랜치)들이 있는지 봐요. git branch목록을 보여주고, 지금 내가 있는 우주 앞엔 * 표시가 붙어요.

git branch — 브랜치 목록을 봐요
* main — 별표가 본점에 있다는 뜻이에요. 지금은 우주가 하나뿐이라 본점밖에 없네요. 곧 신메뉴 우주를 하나 더 만들 거예요.

이제 git checkout -b mara-tteokbokki 를 칠 거예요. -b는 'branch를 새로 만들면서'라는 뜻이에요. 이 명령을 치면 어떻게 될까요?

맞아요. checkout -b새 우주를 만들고(branch) + 그 안으로 이동(checkout)을 한 번에 해요. 본점은 그대로 두고, 나는 신메뉴 우주로 순간이동하는 거예요. 직접 해볼까요? 👇

마라떡볶이 실험용 평행우주를 만들고 바로 들어가요. 들어갔으면 git branch별표가 옮겨갔는지 꼭 확인해요.

git checkout -b mara-tteokbokki — 신메뉴 우주를 만들고 그 안으로 들어가요
git branch — 별표가 어디 붙었나 확인
별표(*)가 mara-tteokbokki로 옮겨갔죠? 이제부터 여기서 뭘 하든 본점(main)은 안전해요. 마음껏 실험할 시간이에요.

신메뉴 우주에서 마라떡볶이 메뉴 파일을 하나 만들고, 이 우주에만 그 변화를 기록(commit)해요. 이 기록은 본점엔 아직 없어요.

echo "마라떡볶이 3500원" > menu/mara.txt — 마라떡볶이 메뉴 파일을 만들어요
git add menu/mara.txt — 변화를 무대에 올려요
git commit -m "신메뉴 마라떡볶이 추가" — 이 우주에 기록으로 남겨요
방금 commit 줄에 [mara-tteokbokki ...] 라고 우주 이름이 찍혔죠? 이 변화는 이 평행우주에만 존재해요. 본점은 여전히 마라떡볶이를 모릅니다.

실험이 끝났으니 본점으로 돌아가 봐요. 우주를 옮겨다닐 땐 checkout을 써요(이번엔 새로 만드는 게 아니니 -b 없이). 빈칸을 채워보세요.

정답! git checkout main 이에요. 이미 있는 우주로 옮길 땐 -b가 필요 없어요. 참고로 요즘 git은 git switch main도 같은 뜻으로 받아줘요.

본점(main)으로 돌아가서 ls menu로 보면 마라떡볶이가 안 보여요 — 본점엔 없으니까요. 신메뉴가 만족스러우니, 이제 merge로 실험 우주를 본점에 합쳐요.

git checkout main — 본점으로 돌아가요
ls menu — 본점엔 아직 마라가 없어요
git merge mara-tteokbokki — 신메뉴 우주를 본점에 합쳐요
ls menu — 이제 본점에도 생겼나 확인
merge 한 줄로 실험이 본점에 들어왔어요. 합치기 전엔 안 보이다가, 합친 뒤엔 보인다 — 이 대비를 눈으로 확인한 게 오늘의 핵심이에요.
만약 마라떡볶이가 너무 매워서 실패작이라면, 그 우주를 어떻게 할까요?
맞아요. 실험 우주는 merge 하기 전까진 본점과 완전히 분리돼 있어요. 망한 실험은 그냥 합치지 않으면 끝이에요. 본점은 처음부터 무사했죠. 이게 '두려움 없이 실험한다'의 진짜 의미예요.

오늘 마라떡볶이를 실험한 흐름을 떠올리며 순서를 맞춰보세요. (↑↓로 정렬)

완벽해요! 우주 만들기 → 실험·기록 → 본점 복귀 → 합치기. 이 네 박자가 모든 신기능 개발의 기본 리듬이에요.

실전에선 이 흐름을 손으로 다 치지 않아요. Claude에게 통째로 시킵니다. Claude Code 창에 이렇게 말해보세요. (내 말로 바꿔도 OK)

여름 한정 메뉴 실험용 브랜치 파서 냉면 메뉴 추가하고 커밋까지 해줘 — Claude에게 브랜치 작업을 통째로 부탁해요
오늘 손으로 익힌 흐름을 Claude가 한 번에 해줬죠? 그래도 직접 쳐본 게 중요해요 — Claude가 뭘 했는지 이해하고 검토할 수 있어야 진짜 실력이거든요.
한 줄로
브랜치는 본점을 복제한 평행우주예요. checkout -b로 만들어 실험하고, 망하면 버리고, 성공하면 merge로 본점에 합쳐요. 본체는 늘 안전하니 두려움 없이 실험할 수 있어요.
다음 레슨에서
혼자 쓸 땐 그냥 merge 하면 되지만, 팀에선 먼저 동료에게 보여주고 검토받은 뒤 합쳐요. 그게 PR — 리뷰 받고 합치기예요. 신메뉴를 함부로 본점에 올리지 않고, 한 번 확인받는 안전장치를 다음에 배웁니다. 🔍