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
오늘 수업 흐름
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
지난 주차 복습은 짧게
이번 시간에 필요한 부분만 다시 확인합니다.
이미 배운 내용
• 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
Part 1
Git branch 소개
작업 공간을 나누는 이유부터 HEAD, merge까지 한 번에 연결합니다.
LabAnyWhere Basic Lecture · Git Branch · 4
왜 branch가 필요할까요?
상황
팀 프로젝트에서 로그인 기능, 프로필 기능, 버그 수정이 동시에 진행되고 있습니다.
main에 바로 작업하면
• 실험 중인 코드가 섞임
• 실수의 영향 범위가 큼
• 팀원의 작업과 충돌 가능
branch로 나누면
• 기능별 작업 공간 분리
• main은 안정적으로 유지
• 완성 후에만 합치기 가능
main
feature/login
feature/profile
LabAnyWhere Basic Lecture · Git Branch · 5
main에 바로 작업하는 방식의 한계
기능 A
버그 수정
미완성 기능 B
급한 수정 C
main 하나에 모든 변경이 직접 쌓입니다.
• 어떤 변경이 안정적인지 구분하기 어렵습니다.
• 작업 중인 코드를 되돌리기 어려워집니다.
• 협업자가 많아질수록 충돌 가능성이 커집니다.
LabAnyWhere Basic Lecture · Git Branch · 6
branch는 “작업 공간 분리”입니다.
main
feature/login
feature/profile
분리해서 얻는 것
• 완성되지 않은 기능을 main과 분리
• 여러 시도를 안전하게 진행
• 작업 단위별 commit 정리
• 완성 후 merge 또는 PR로 합치기
한 문장: branch는 main에서 잠깐 갈라져 나온 독립 작업 흐름입니다.
LabAnyWhere Basic Lecture · Git Branch · 7
브랜치는 commit을 가리키는 이름표입니다.
C1
C2
C3
C4
main
feature/intro
HEAD
현재 내가 작업 중인
브랜치를 가리킵니다.
새 commit은 현재 HEAD가 가리키는 브랜치 뒤에 붙습니다.
LabAnyWhere Basic Lecture · Git Branch · 8
HEAD와 branch 전환
현재 branch 확인
git branch
# * 표시가 붙은 브랜치가
# 현재 내가 서 있는 위치
다른 branch로 이동
git switch main
git switch feature/intro
주의
수정한 파일을 commit하지 않은 상태에서 branch를 바꾸면 Git이 전환을 막을 수 있습니다.
문제가 생기면 항상 git status부터 확인합니다.
LabAnyWhere Basic Lecture · Git Branch · 9
브랜치 이름은 어떻게 지을까요?
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
브랜치 기본 명령어 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
브랜치 기본 명령어 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
로컬 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
Part 2
GitHub 원격 저장소 생성
새 저장소를 만들고, 로컬 branch를 원격에 공유하는 흐름을 정리합니다.
LabAnyWhere Basic Lecture · Git Branch · 14
원격 저장소는 어떤 역할을 할까요?
Local
내 컴퓨터
GitHub
Remote Repository
Team
Collaborators
push
pull
PR / review
branch를 원격에 올리면 다른 사람도 그 작업 흐름을 볼 수 있고, PR로 main에 합칠지 논의할 수 있습니다.
LabAnyWhere Basic Lecture · Git Branch · 15
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
로컬 저장소와 원격 저장소 연결
새로 만든 로컬 프로젝트를 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
브랜치를 원격에 올리기
처음 push할 때
git push -u origin feature/intro
이후 같은 브랜치에서
git push
# -u로 연결해두면 다음부터는
# branch 이름을 생략할 수 있습니다.
origin
GitHub 원격 저장소의 기본 별칭입니다.
feature/intro
원격에 새로 생길 브랜치 이름입니다.
LabAnyWhere Basic Lecture · Git Branch · 18
Pull Request는 무엇을 하는 단계일까요?
1
branch push
feature/intro를
원격 저장소에 올립니다.
2
PR 생성
GitHub에서
main으로 합치자고 요청합니다.
3
리뷰 / 확인
변경된 파일과 commit을
확인합니다.
4
merge
문제가 없으면
main에 합칩니다.
PR은 단순한 버튼이 아니라 “main에 합치기 전 확인하는 대화 공간”입니다.
LabAnyWhere Basic Lecture · Git Branch · 19
협업 상황의 기본 흐름
저장소 주인
원격 저장소 생성
협업자 초대
협업자
clone 후 branch 생성
작업 후 push
팀 전체
PR 리뷰
main에 merge
오늘 실습은 혼자 진행하지만, 실제 의미는 “각자 branch에서 작업한 뒤 PR로 공유”하는 협업 흐름입니다.
LabAnyWhere Basic Lecture · Git Branch · 20
Part 3
Git branch 실습
브랜치 생성부터 원격 push, merge까지 한 단계씩 진행합니다.
LabAnyWhere Basic Lecture · Git Branch · 21
실습 전 체크리스트
1
터미널
Ubuntu 터미널 또는 VS Code 터미널을 열어둡니다.
2
GitHub 로그인
브라우저에서 GitHub에 로그인되어 있는지 확인합니다.
3
작업 폴더
실습용 폴더를 하나 만들고 그 안에서 명령어를 실행합니다.
실습 폴더 준비
mkdir git-branch-practice
cd git-branch-practice
권장: 기존 과제 폴더 안에서 실습하지 말고, 새 폴더를 만들어 진행하세요.
LabAnyWhere Basic Lecture · Git Branch · 22
실습 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
실습 2. feature branch 만들기
새 브랜치 생성 후 이동
git switch -c feature/intro
현재 브랜치 확인
git branch
# * feature/intro
이 시점의 의미
main의 내용은 그대로 두고,
feature/intro라는 독립 작업 공간에서
새로운 변경을 쌓기 시작합니다.
LabAnyWhere Basic Lecture · Git Branch · 24
실습 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
실습 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
실습 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
실습 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
Part 4
협업 시나리오로 정리
실제 팀 프로젝트에서 브랜치가 어떻게 쓰이는지 짧은 상황으로 묶어봅니다.
LabAnyWhere Basic Lecture · Git Branch · 29
시나리오 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
시나리오 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
협업에서는 최신 main을 먼저 확인합니다.
왜 필요한가요?
다른 팀원이 main에 먼저 merge한 내용이 있을 수 있습니다.
그 상태를 반영하지 않고 push하면 충돌이나 거절이 발생할 수 있습니다.
작업 전 자주 쓰는 명령
git switch main
git pull origin main
git switch feature/intro
git merge main
원칙: 내 작업을 올리기 전에, 팀의 최신 변경을 내 브랜치에 먼저 반영합니다.
LabAnyWhere Basic Lecture · Git Branch · 32
merge conflict는 언제 생길까요?
main
feature/login
feature/profile
발생 조건
• 두 브랜치가 같은 파일의 같은 위치를 다르게 수정
• Git이 어떤 내용을 남겨야 할지 자동 판단 불가
• 사람이 직접 선택하고 다시 commit해야 함
conflict는 실패가 아니라 “결정을 사람이 해야 하는 상황”입니다.
LabAnyWhere Basic Lecture · Git Branch · 33
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
최종 미션: 혼자서 끝까지 해보기
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
오늘의 최소 치트시트
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
마무리
오늘 배운 것
• branch는 기능별 작업 공간을 분리하기 위한 도구입니다.
• HEAD는 현재 작업 중인 브랜치를 가리킵니다.
• 로컬 작업은 commit으로 저장하고, 원격 공유는 push로 진행합니다.
• GitHub에서는 PR을 통해 main에 합칠 내용을 확인합니다.
• merge conflict는 직접 코드를 결정해서 해결합니다.
다음에는 PR 리뷰, 협업 규칙, conflict 해결을 더 깊게 다룰 수 있습니다.
LabAnyWhere Basic Lecture · Git Branch · 37
질문 있나요?
branch · remote · PR · merge
LabAnyWhere Basic Lecture · Git Branch · 38