1 of 38

Git Branch

& GitHub Remote

2026년 5월 27일 (수) 19:00–20:00

Git branch 소개

Github 원격 저장소 생성

Git branch 실습

main을 안전하게 유지하면서

기능별 작업 공간을 나누고

GitHub로 공유하는 흐름을 익힙니다.

main

feature/login

feature/profile

GitHub

LabAnyWhere Basic Lecture · Git Branch · 1

2 of 38

오늘 수업 흐름

3주차의 Git 기본 명령어는 짧게만 연결하고, 브랜치 중심으로 진행합니다.

1

지난 주차 연결

Git / GitHub 개념, 설치, 로컬 저장소, add / commit / push는 이미 배운 내용입니다.

2

브랜치 개념

main과 feature branch를 분리하는 이유와 HEAD, merge의 의미를 이해합니다.

3

원격 저장소

GitHub 저장소 생성과 로컬 저장소 연결, branch push 흐름을 익힙니다.

4

실습

브랜치 생성, 작업, commit, push, merge까지 직접 진행합니다.

오늘의 한 줄 목표

“기능별 작업 공간을 나누고, 원격 저장소에 공유한 뒤, 안정적인 main에 다시 합칠 수 있다.”

LabAnyWhere Basic Lecture · Git Branch · 2

3 of 38

지난 주차 복습은 짧게

이번 시간에 필요한 부분만 다시 확인합니다.

이미 배운 내용

• Git / GitHub의 역할

• GitHub 가입과 Git 설치

• git init, add, commit

• 원격 저장소 clone / push

이번 시간에 더할 내용

• main을 보호하는 branch 전략

• feature branch 생성과 전환

• GitHub에 branch push

• merge와 conflict의 기본 흐름

중요

오늘은 Git 기본 명령어를 다시 길게 설명하지 않습니다.

대신 branch와 협업 흐름에 시간을 더 씁니다.

LabAnyWhere Basic Lecture · Git Branch · 3

4 of 38

Part 1

Git branch 소개

작업 공간을 나누는 이유부터 HEAD, merge까지 한 번에 연결합니다.

LabAnyWhere Basic Lecture · Git Branch · 4

5 of 38

왜 branch가 필요할까요?

상황

팀 프로젝트에서 로그인 기능, 프로필 기능, 버그 수정이 동시에 진행되고 있습니다.

main에 바로 작업하면

• 실험 중인 코드가 섞임

• 실수의 영향 범위가 큼

• 팀원의 작업과 충돌 가능

branch로 나누면

• 기능별 작업 공간 분리

• main은 안정적으로 유지

• 완성 후에만 합치기 가능

main

feature/login

feature/profile

LabAnyWhere Basic Lecture · Git Branch · 5

6 of 38

main에 바로 작업하는 방식의 한계

기능 A

버그 수정

미완성 기능 B

급한 수정 C

main 하나에 모든 변경이 직접 쌓입니다.

• 어떤 변경이 안정적인지 구분하기 어렵습니다.

• 작업 중인 코드를 되돌리기 어려워집니다.

• 협업자가 많아질수록 충돌 가능성이 커집니다.

LabAnyWhere Basic Lecture · Git Branch · 6

7 of 38

branch는 “작업 공간 분리”입니다.

main

feature/login

feature/profile

분리해서 얻는 것

• 완성되지 않은 기능을 main과 분리

• 여러 시도를 안전하게 진행

• 작업 단위별 commit 정리

• 완성 후 merge 또는 PR로 합치기

한 문장: branch는 main에서 잠깐 갈라져 나온 독립 작업 흐름입니다.

LabAnyWhere Basic Lecture · Git Branch · 7

8 of 38

브랜치는 commit을 가리키는 이름표입니다.

C1

C2

C3

C4

main

feature/intro

HEAD

현재 내가 작업 중인

브랜치를 가리킵니다.

새 commit은 현재 HEAD가 가리키는 브랜치 뒤에 붙습니다.

LabAnyWhere Basic Lecture · Git Branch · 8

9 of 38

HEAD와 branch 전환

현재 branch 확인

git branch

# * 표시가 붙은 브랜치가

# 현재 내가 서 있는 위치

다른 branch로 이동

git switch main

git switch feature/intro

주의

수정한 파일을 commit하지 않은 상태에서 branch를 바꾸면 Git이 전환을 막을 수 있습니다.

문제가 생기면 항상 git status부터 확인합니다.

LabAnyWhere Basic Lecture · Git Branch · 9

10 of 38

브랜치 이름은 어떻게 지을까요?

1

feature/...

새 기능 개발

예: feature/login, feature/profile

2

fix/...

버그 수정

예: fix/login-error

3

docs/...

문서 수정

예: docs/readme

4

hotfix/...

긴급 수정

예: hotfix/deploy-error

추천 규칙

영문 소문자, 하이픈(-) 사용 · 작업 목적이 드러나게 작성 · 너무 긴 이름은 피하기

LabAnyWhere Basic Lecture · Git Branch · 10

11 of 38

브랜치 기본 명령어 1: 만들고 이동하기

목록 보기

git branch

git branch -a

브랜치 만들기

git branch feature/intro

만들면서 이동

git switch -c feature/intro

실습에서는 git switch -c feature/intro 를 사용합니다.

한 번에 “새 브랜치 생성 + 그 브랜치로 이동”을 처리하기 때문입니다.

LabAnyWhere Basic Lecture · Git Branch · 11

12 of 38

브랜치 기본 명령어 2: 합치고 정리하기

현재 브랜치를 main으로 합치기

git switch main

git merge feature/intro

브랜치 삭제

git branch -d feature/intro

그래프로 확인

git log --oneline --graph --all

merge 전에는 main에 어떤 내용이 들어올지 반드시 확인합니다.

팀 프로젝트에서는 보통 GitHub Pull Request로 확인한 뒤 merge합니다.

LabAnyWhere Basic Lecture · Git Branch · 12

13 of 38

로컬 branch 기본 흐름

1

main에서 시작

git switch main

git pull origin main

2

새 branch 생성

git switch -c feature/intro

3

수정 후 commit

git add .

git commit -m "feat: ..."

4

main에 합치기

git switch main

git merge feature/intro

main → branch → commit → merge

이 흐름만 정확히 이해하면 이후 PR, 협업, conflict도 훨씬 쉽게 이해됩니다.

LabAnyWhere Basic Lecture · Git Branch · 13

14 of 38

Part 2

GitHub 원격 저장소 생성

새 저장소를 만들고, 로컬 branch를 원격에 공유하는 흐름을 정리합니다.

LabAnyWhere Basic Lecture · Git Branch · 14

15 of 38

원격 저장소는 어떤 역할을 할까요?

Local

내 컴퓨터

GitHub

Remote Repository

Team

Collaborators

push

pull

PR / review

branch를 원격에 올리면 다른 사람도 그 작업 흐름을 볼 수 있고, PR로 main에 합칠지 논의할 수 있습니다.

LabAnyWhere Basic Lecture · Git Branch · 15

16 of 38

GitHub에서 새 저장소 만들기

github.com/new

Create a new repository

Repository name

law-git-branch-practice

Visibility

Public

Private

Create repository

순서

• New 클릭

• Repository name 입력

• Public 선택

• Create repository 클릭

이미 clone으로 시작한 경우에는 이 과정을 건너뛸 수 있습니다.

LabAnyWhere Basic Lecture · Git Branch · 16

17 of 38

로컬 저장소와 원격 저장소 연결

새로 만든 로컬 프로젝트를 GitHub에 연결

git remote add origin <저장소_URL>

git branch -M main

git push -u origin main

연결 확인

git remote -v

# origin https://github.com/... (fetch)

# origin https://github.com/... (push)

핵심: remote add origin은 “이 로컬 저장소를 어느 GitHub 저장소와 연결할지” 알려주는 명령입니다.

LabAnyWhere Basic Lecture · Git Branch · 17

18 of 38

브랜치를 원격에 올리기

처음 push할 때

git push -u origin feature/intro

이후 같은 브랜치에서

git push

# -u로 연결해두면 다음부터는

# branch 이름을 생략할 수 있습니다.

origin

GitHub 원격 저장소의 기본 별칭입니다.

feature/intro

원격에 새로 생길 브랜치 이름입니다.

LabAnyWhere Basic Lecture · Git Branch · 18

19 of 38

Pull Request는 무엇을 하는 단계일까요?

1

branch push

feature/intro를

원격 저장소에 올립니다.

2

PR 생성

GitHub에서

main으로 합치자고 요청합니다.

3

리뷰 / 확인

변경된 파일과 commit을

확인합니다.

4

merge

문제가 없으면

main에 합칩니다.

PR은 단순한 버튼이 아니라 “main에 합치기 전 확인하는 대화 공간”입니다.

LabAnyWhere Basic Lecture · Git Branch · 19

20 of 38

협업 상황의 기본 흐름

저장소 주인

원격 저장소 생성

협업자 초대

협업자

clone 후 branch 생성

작업 후 push

팀 전체

PR 리뷰

main에 merge

오늘 실습은 혼자 진행하지만, 실제 의미는 “각자 branch에서 작업한 뒤 PR로 공유”하는 협업 흐름입니다.

LabAnyWhere Basic Lecture · Git Branch · 20

21 of 38

Part 3

Git branch 실습

브랜치 생성부터 원격 push, merge까지 한 단계씩 진행합니다.

LabAnyWhere Basic Lecture · Git Branch · 21

22 of 38

실습 전 체크리스트

1

터미널

Ubuntu 터미널 또는 VS Code 터미널을 열어둡니다.

2

GitHub 로그인

브라우저에서 GitHub에 로그인되어 있는지 확인합니다.

3

작업 폴더

실습용 폴더를 하나 만들고 그 안에서 명령어를 실행합니다.

실습 폴더 준비

mkdir git-branch-practice

cd git-branch-practice

권장: 기존 과제 폴더 안에서 실습하지 말고, 새 폴더를 만들어 진행하세요.

LabAnyWhere Basic Lecture · Git Branch · 22

23 of 38

실습 1. 로컬 저장소 준비

명령어

git init

echo "# Git Branch Practice" > README.md

git add README.md

git commit -m "init: first commit"

git branch -M main

확인

상태 확인

git status

git branch

결과: main 브랜치에 첫 commit이 만들어졌습니다.

LabAnyWhere Basic Lecture · Git Branch · 23

24 of 38

실습 2. feature branch 만들기

새 브랜치 생성 후 이동

git switch -c feature/intro

현재 브랜치 확인

git branch

# * feature/intro

이 시점의 의미

main의 내용은 그대로 두고,

feature/intro라는 독립 작업 공간에서

새로운 변경을 쌓기 시작합니다.

LabAnyWhere Basic Lecture · Git Branch · 24

25 of 38

실습 3. 브랜치에서 파일 수정 후 commit

파일 생성 및 commit

echo "안녕하세요. Git branch 실습 중입니다." > intro.txt

git status

git add intro.txt

git commit -m "feat: add intro file"

확인 포인트

• git status에서 변경 파일 확인

• commit 메시지는 작업 내용을 설명

• feature/intro에 새 commit 생성

commit은 로컬 저장소의 체크포인트입니다. 아직 GitHub에 공유된 것은 아닙니다.

LabAnyWhere Basic Lecture · Git Branch · 25

26 of 38

실습 4. 브랜치를 원격에 push

원격 저장소가 이미 연결되어 있다면

git push -u origin feature/intro

연결이 안 되어 있다면 먼저

git remote add origin <저장소_URL>

git push -u origin feature/intro

GitHub에서 확인

• 저장소 페이지에 branch 알림 표시

• feature/intro 브랜치 선택 가능

• Pull Request 생성 버튼 확인 가능

LabAnyWhere Basic Lecture · Git Branch · 26

27 of 38

실습 5. GitHub에서 Pull Request 만들기

github.com / Pull requests

Compare & pull request

base: main

compare: feature/intro

Create pull request

확인할 것

• base가 main인지 확인

• compare가 feature/intro인지 확인

• 변경 파일 목록 확인

• 설명 작성 후 PR 생성

LabAnyWhere Basic Lecture · Git Branch · 27

28 of 38

실습 6. main에 merge하고 로컬 동기화

GitHub에서 PR을 merge했다면

git switch main

git pull origin main

git log --oneline --graph --all

로컬에서 직접 merge했다면

git switch main

git merge feature/intro

git push origin main

중요

GitHub에서 merge했다면

로컬 main은 아직 예전 상태일 수 있습니다.

그래서 git pull origin main으로

동기화해야 합니다.

LabAnyWhere Basic Lecture · Git Branch · 28

29 of 38

Part 4

협업 시나리오로 정리

실제 팀 프로젝트에서 브랜치가 어떻게 쓰이는지 짧은 상황으로 묶어봅니다.

LabAnyWhere Basic Lecture · Git Branch · 29

30 of 38

시나리오 A. 새 프로젝트를 시작하는 개발자

상황: 해커톤 팀 프로젝트를 새로 시작합니다.

1

로컬 공간 생성

새 폴더를 만들고 git init으로 저장소를 시작합니다.

2

원격 저장소 생성

GitHub에서 새 repository를 만들고 origin으로 연결합니다.

3

초기 코드 공유

첫 commit을 push해서 팀원이 받을 수 있는 상태로 만듭니다.

키워드: git init → git remote add origin → git push -u origin main

LabAnyWhere Basic Lecture · Git Branch · 30

31 of 38

시나리오 B. 기존 팀에 합류한 협업자

상황: 팀 저장소에 초대받아 개인 기능을 맡았습니다.

1

clone

원격 저장소를 내 컴퓨터에 복제합니다.

2

branch 생성

main에서 개인 작업용 브랜치를 만듭니다.

3

작업 후 push

브랜치에 commit을 쌓고 원격으로 push합니다.

4

PR

GitHub에서 Pull Request를 만듭니다.

예시 명령어

git clone <저장소_URL>

cd <폴더명>

git switch -c feature/my-intro

git push -u origin feature/my-intro

LabAnyWhere Basic Lecture · Git Branch · 31

32 of 38

협업에서는 최신 main을 먼저 확인합니다.

왜 필요한가요?

다른 팀원이 main에 먼저 merge한 내용이 있을 수 있습니다.

그 상태를 반영하지 않고 push하면 충돌이나 거절이 발생할 수 있습니다.

작업 전 자주 쓰는 명령

git switch main

git pull origin main

git switch feature/intro

git merge main

원칙: 내 작업을 올리기 전에, 팀의 최신 변경을 내 브랜치에 먼저 반영합니다.

LabAnyWhere Basic Lecture · Git Branch · 32

33 of 38

merge conflict는 언제 생길까요?

main

feature/login

feature/profile

발생 조건

• 두 브랜치가 같은 파일의 같은 위치를 다르게 수정

• Git이 어떤 내용을 남겨야 할지 자동 판단 불가

• 사람이 직접 선택하고 다시 commit해야 함

conflict는 실패가 아니라 “결정을 사람이 해야 하는 상황”입니다.

LabAnyWhere Basic Lecture · Git Branch · 33

34 of 38

conflict 표시를 읽는 방법

conflict marker

<<<<<<< HEAD

내가 현재 가진 코드

=======

상대 브랜치에서 들어온 코드

>>>>>>> feature/intro

해결 순서

• 남길 코드 결정

• marker 줄 삭제

• 파일 저장

• git add .

• git commit

해결 후

git status

git add .

git commit -m "fix: resolve merge conflict"

LabAnyWhere Basic Lecture · Git Branch · 34

35 of 38

최종 미션: 혼자서 끝까지 해보기

1

새 브랜치 만들기

feature/about-me 브랜치를 생성합니다.

2

파일 작성

about.txt 파일에 자기소개 한 줄을 작성합니다.

3

commit & push

변경 사항을 commit하고 원격 branch에 push합니다.

4

PR / merge

GitHub에서 PR을 만들고 main에 merge합니다.

미션 명령어 흐름

git switch -c feature/about-me

echo "안녕하세요, 저는 ___입니다." > about.txt

git add about.txt

git commit -m "feat: add about me"

git push -u origin feature/about-me

LabAnyWhere Basic Lecture · Git Branch · 35

36 of 38

오늘의 최소 치트시트

branch

git branch

git switch -c feature/intro

git switch main

git merge feature/intro

git branch -d feature/intro

remote

git remote -v

git push -u origin feature/intro

git pull origin main

trouble

git status

git log --oneline --graph --all

# conflict 해결 후

git add .

git commit

막히면 외우기보다 git status로 현재 상태를 읽는 것이 먼저입니다.

LabAnyWhere Basic Lecture · Git Branch · 36

37 of 38

마무리

오늘 배운 것

• branch는 기능별 작업 공간을 분리하기 위한 도구입니다.

• HEAD는 현재 작업 중인 브랜치를 가리킵니다.

• 로컬 작업은 commit으로 저장하고, 원격 공유는 push로 진행합니다.

• GitHub에서는 PR을 통해 main에 합칠 내용을 확인합니다.

• merge conflict는 직접 코드를 결정해서 해결합니다.

다음에는 PR 리뷰, 협업 규칙, conflict 해결을 더 깊게 다룰 수 있습니다.

LabAnyWhere Basic Lecture · Git Branch · 37

38 of 38

질문 있나요?

branch · remote · PR · merge

LabAnyWhere Basic Lecture · Git Branch · 38