Day 9 - Workflow

haxxru log;·2026년 3월 13일
post-thumbnail

이 글은 2026년 3월 13일 작성된 글입니다.

Git Flow vs GitHub Flow / git pull 동작 원리 정리

Git 협업을 진행할 때 브랜치 전략pull / push 동작 방식
이해하는 것은 매우 중요하다.
이번 학습에서는 Git Flow와 GitHub Flow의 차이, 그리고 git pull의
내부 동작 방식
을 정리하고 GitHub 협업 과정(PR, Issue, Merge 등)을 직접
실습해 보았다.


1. Git Flow vs GitHub Flow

Git에는 여러 브랜치 전략이 존재하지만 대표적으로 Git FlowGitHub
Flow
가 많이 사용된다.

구분GIT FLOWGITHUB FLOW
브랜치 전략복잡함 (main, develop, feature, release, hotfix)단순함 (main, feature)
적합한 분야버전 관리가 필요한 패키지 / 앱지속적 배포가 필요한 웹 서비스
배포 주기길다 (주 단위, 월 단위)짧다 (일 단위, 시간 단위)
장점체계적인 버전 관리 가능빠른 배포와 피드백 가능
단점프로세스가 복잡하고 느림안정성이 떨어질 수 있지만 자동화 테스트로 극복 가능

Git Flow 특징

main
 └ develop
    └ feature/*
    └ release/*
    └ hotfix/*

대규모 프로젝트나 버전 관리가 중요한 서비스에서 주로 사용된다.

GitHub Flow 특징

main
 └ feature/*

feature 브랜치를 생성하여 작업 후 Pull Request → 리뷰 → main 병합 →
배포
흐름을 가진다.

주로 지속적 배포(CI/CD)가 필요한 웹 서비스에서 많이 사용된다.


2. git pull 명령어

기본 사용

git pull origin main

현재 내가 작업하고 있는 로컬 브랜치에 리모트(origin)의 main 브랜치
내용을 가져와서 적용한다.

병합 방식은 merge이다.

rebase 방식

git pull origin main --rebase

현재 로컬 브랜치에 리모트의 main 브랜치 내용을 가져와 적용하지만
병합 방식이 rebase로 동작한다.


3. git pull의 내부 동작 원리

git pull origin main 명령은 내부적으로 다음 두 명령이 순차적으로
실행되는 것과 같다.

1. fetch

git fetch origin main

리모트(origin)의 main 브랜치 내용을 로컬 저장소로 가져온다.

2. merge

git merge FETCH_HEAD

가져온 내용을 현재 브랜치에 병합한다.

git pull은 아래와 같은 과정이다.

fetch → merge

FETCH_HEAD란?

FETCH_HEAD가장 최근에 fetch 명령으로 가져온 브랜치의 최신 커밋을
가리키는 참조(reference)
이다.

git fetch를 실행하면 원격 저장소의 데이터를 로컬로 가져오고
그 최신 커밋 정보가 FETCH_HEAD에 기록된다.


4. git pull vs git push 적용 대상 차이

구분git pull origin maingit push origin main
적용 대상로컬의 현재 브랜치에 리모트의 main 브랜치 적용로컬의 main 브랜치를 리모트의 main 브랜치에 적용

예시

(현재 브랜치 : test) git pull origin main
  • test 브랜치에 리모트 main 브랜치 내용이 적용됨
(현재 브랜치 : test) git push origin main
  • 로컬의 main 브랜치가 리모트의 main 브랜치에 적용됨
  • 현재 브랜치가 test이어도 main 브랜치가 push 된다

5. git pull vs git pull --rebase 비교

구분git pull origin maingit pull origin main --rebase
병합 방식mergerebase
커밋 히스토리병합 커밋 생성 → 히스토리 복잡일자형 히스토리
충돌 해결한 번에 충돌 해결커밋별로 순차적 해결
장점이력이 보존됨깔끔한 커밋 이력
단점커밋 히스토리가 복잡해짐이력이 변경됨
권장 상황동일 파일 작업이 적을 때동일 파일 작업이 많을 때

6. GitHub 협업 실습

GitHub 협업 흐름을 직접 실습해 보았다.

실습 내용

  • GitHub 리포지토리 생성
  • Issue 생성
  • Feature 브랜치 생성
  • Pull Request 생성
  • Pull Request 거부
  • Pull Request 승인
  • squash merge 진행

GitHub 협업 흐름은 일반적으로 다음과 같다.

Issue 생성
   ↓
Feature Branch 생성
   ↓
개발 진행
   ↓
Pull Request 생성
   ↓
Code Review
   ↓
Merge

특히 squash merge를 사용하면 여러 커밋을 하나로 합쳐 깔끔한 커밋
히스토리를 만들 수 있다.


✅ 정리

  • Git Flow는 복잡하지만 체계적인 버전 관리에 적합
  • GitHub Flow는 단순하고 빠른 배포에 적합
  • git pull은 내부적으로 fetch + merge 과정으로 동작
  • --rebase 옵션을 사용하면 커밋 히스토리를 깔끔하게 유지할 수
    있음
  • GitHub 협업에서는 Issue → PR → Review → Merge 흐름이 핵심

느낀 점

Git을 단순한 버전 관리 도구라고 생각했지만
실제로는 협업을 위한 작업 흐름을 관리하는 시스템이라는 것을 느꼈다.

특히 GitHub에서 PR 생성, 리뷰, squash merge 과정을 직접 경험하면서
팀 프로젝트에서 코드가 어떤 흐름으로 관리되는지 이해할 수 있었다.

사실 그동안 독학과 단독 프로젝트 위주로 공부해왔던 나는
익숙하지 않지만, 앞으로 팀 프로젝트를 진행하면서
브랜치 전략과 PR 흐름을 자연스럽게 활용할 수 있도록 익숙해져야겠다.

0개의 댓글