Git - Pull Request(PR) 과 Merge

Aram Kim·2025년 7월 10일

조각 지식

목록 보기
2/5
post-thumbnail

PULL Request (PR)

1. Pull Request (PR) 정의

  • 한 브랜치(예를 들어 feature 브랜치)에서 작업한 내용을 main혹은 master 브랜치 등에 병합해달라고 요청하는 것
    -> 이때 요청은 보통 Github, GitLab과 같은 플랫폼에서 이루어진다.

예시
A 팀원이 로그인 기능을 따로 feature/login 브랜치에서 개발했다.
그리고 나서 팀에게 "로그인 기능 다 만들었는데 이 기능 메인에 합쳐도 될까요?" 라고 요청하는 단계
-> 이게 바로 Pull Request

2. 목적

  • 코드 리뷰 받기 위해
  • 병합 전에 다른 사람들과 협의하기 위해
  • 변경 내용을 문서화, 추적하기 위해

Merge

1. Merge 정의

  • 한 브랜치의 변경 내용을 다른 브랜치에 실제로 반영하는 작업
    -> feature/login 의 코드를 main 에 진짜로 합치는 것

2. 목적

  • 여러 개발자들이 작업한 결과를 하나의 흐름으로 통합하기 위해
  • 최종 결과물을 담는 브랜치(main 등)에 작업 내용을 반영하기 위해

PR vs Merge

개념PR (Pull Request)Merge
목적다른 사람에게 “이거 합쳐도 될까?” 묻는 단계실제로 브랜치를 합치는 작업
시점작업이 끝난 후, 병합 전PR 승인 후 혹은 그냥 직접
혼자 쓸까?잘 안 씀 (혼자라면 의미 적음)혼자도 자주 씀
협업에선?거의 필수! 코드 리뷰, 기록용리뷰 끝난 뒤 진행하는 최종 작업
비유로 하면팀장에게 보고서 결재 요청하는 느낌승인나고 진짜 문서합치는 느낌

Git에서 PR -> Merge까지 전체 순서

1. 새로운 기능을 만들기 위해 브랜치 생성

git switch -c feature/login
  • main에서 파생된 새로운 브랜치 만들고 브랜치 전환
  • 여기서 로그인 기능을 만든다고 치면 보통 feature/login같은 브랜치명을 쓴다.

2. 기능 개발하고 커밋

git add .
git commit -m "로그인 기능 구현 완료"
  • 기능을 구현하고 커밋하기
  • 커밋은 기능 단위로 잘게 쪼개서 하는 것이 좋다! -> 리뷰할 때 보기 편하니까

3. 원격 저장소(remote)에 push

git push origin feature/login
  • 로컬에서 작업한 브랜치를 GitHub로 올린다.

4. GitHub에서 Pull Request(PR) 생성

  • 윗단에 Compare & Pull Request 버튼 이 생긴 것을 확인할 수 있다. 버튼을 누른다.

  • 어느 브랜치에 합칠것인지 선택한다. main 브랜치에 합칠 것이기 때문에 base를 main으로 선택한다.
  • Add a Description에 설명도 적어 뭘 만들었는지, 어떤 변경이 있었는지 등을 적는다.
  • 하단의 Create pull request 버튼을 누른다.

5. 팀원이 코드 리뷰

  • 팀원의 리뷰 받고 수정할 게 있으면 수정하고 다시 Push하면 PR에 자동 반영된다.

6. 리뷰 통과 후 Merge

  • 승인되면 Merge pull request 버튼 누른다.

  • 혹은 아래처럼 터미널에서 수동으로도 가능
git checkout main
git pull origin main
git merge feature/로그인
git push origin main

7. 로컬에 반영

git switch main 	 # 혹시 다른 브랜치에 있다면 main으로 이동
git pull origin main # 원격 Github의 최신 main을 내 로컬로 가져옴
  • 로컬에 있는 main 브랜치에 merge하면 merge 된 내역을 확인할 수 있다.

8. (선택) 브랜치 정리

git branch -d feature/login       # 로컬에서 삭제
git push origin --delete feature/login  # 원격에서 삭제
  • 작업이 끝난 브랜치는 정리해줄 수도 있다.
profile
Backend Developer • AWS Cloud • QA Engineer

0개의 댓글