[github] Pull Request는 merge와 무엇이 다른가? / Pull Request 사용법

Yeonbi_Kim·2024년 9월 25일
1

1. MergePull Request 개념 및 사용법

Merge (병합)

  • 개념:
    Merge는 하나의 브랜치에서 작업한 내용을 다른 브랜치로 합치는 작업을 의미다. 가장 일반적인 사용 예는 feature 브랜치에서 새로운 기능을 개발한 후, 이를 devmain 브랜치로 병합하는 것이다.

  • 사용법:

    • Git에서는 보통 두 가지 방법으로 병합할 수 있다:

      1. 직접 병합:
        git merge 명령어를 사용하여 로컬에서 브랜치를 병합한다.
      2. Pull Request를 통한 병합:
        GitHub, GitLab 등에서 사용되는 방식으로, 코드 리뷰를 거쳐 병합하는 방법이다.
    • 예시 (직접 병합):

      # 병합할 브랜치로 이동
      git checkout dev
      # 다른 브랜치의 변경사항 병합
      git merge feature-branch
  • 언제 사용하는지:

    • 주로 작업이 완료된 브랜치의 코드를 메인 브랜치나 다른 브랜치에 반영할 때 사용한다. 예를 들어, 새로운 기능이 완성되었을 때, 그 기능을 main 브랜치에 병합할 때 사용한다.

Pull Request (PR)

  • 개념:
    Pull Request는 한 브랜치에서 다른 브랜치로 작업한 내용을 병합하기 전에 다른 개발자들에게 코드 리뷰를 요청하는 과정이다. 보통 GitHub, GitLab, Bitbucket 같은 플랫폼에서 사용되며, 팀 협업에서 매우 중요한 역할을 한다.

  • 사용법:

    1. 새로운 브랜치에서 작업을 완료한 후, GitHub에서 Pull Request를 생성한다.
    2. 코드 리뷰어들이 코드 변경 사항을 확인하고, 피드백을 남긴다.
    3. 피드백을 반영하거나 승인이 되면, 병합(Merge) 버튼을 눌러 코드를 병합한다.
    • 예시 (GitHub에서 PR 생성):
      1. 작업 브랜치에서 작업 완료 후 푸시:
        git push origin feature-branch.
      2. GitHub에서 "New Pull Request"를 생성하여 dev 브랜치와 병합하도록 요청.
  • 언제 사용하는지:

    • 협업 프로젝트에서 팀원 간 코드 리뷰가 필요할 때 사용한. Pull Request는 코드 품질을 유지하고, 버그나 잘못된 코드 변경을 방지하기 위해 필수적이다.

2. Merge와 Pull Request의 차이점

특징MergePull Request
개념한 브랜치의 작업을 다른 브랜치에 병합하는 작업.코드 리뷰를 요청하고 승인되면 병합하는 작업.
사용 위치로컬 환경 및 CLI에서 주로 사용.GitHub, GitLab 등 협업 플랫폼에서 사용.
목적단순히 브랜치 병합을 완료하기 위한 방법.병합하기 전 코드 리뷰를 진행하여 품질 관리 및 협업에 도움.
리뷰 과정별도의 리뷰 과정 없이 직접 병합 가능.코드 리뷰 과정이 필수적이며, 승인되면 병합 가능.
언제 사용하는지주로 개인 프로젝트나 작은 팀에서 리뷰 없이 병합할 때.팀 협업에서 코드 리뷰가 필요한 경우. 코드 품질을 확인하고 병합.
이슈 관리단순 병합으로 이슈 관리에 관련이 적음.이슈 트래킹과 함께 PR을 사용하여 변경 사항과 관련된 이슈 관리.

3. Merge와 Pull Request를 사용하는 이유와 적합한 상황

Merge 사용이 적합한 상황:

  • 개인 프로젝트:
    혼자서 프로젝트를 관리하고, 코드 리뷰를 할 필요가 없을 때는 직접 git merge를 사용해 빠르게 병합할 수 있다.
  • 작은 팀:
    팀 내에서 리뷰 과정 없이 빠르게 작업을 병합해야 하는 경우, Merge를 직접 사용하는 것이 효율적일 수 있다.

Pull Request 사용이 적합한 상황:

  • 팀 협업:
    Pull Request는 협업 프로젝트에서 필수적이다.
    코드 리뷰를 통해 코드 품질을 유지하고, 다른 팀원들과의 커뮤니케이션을 통해 더 나은 코드를 작성할 수 있다.
  • 오픈소스 프로젝트:
    Pull Request는 오픈소스 프로젝트에서 외부 기여자들이 코드를 기여할 때, 코드를 검토하고 병합하는 과정에서 중요한 역할을 한다.

결론:

  • Merge는 브랜치를 병합하는 가장 기본적인 방식으로, 리뷰 과정 없이 작업을 빠르게 병합할 수 있다.
  • Pull Request는 팀 협업에서 코드 리뷰를 진행하여 품질을 보장하고, 승인된 경우에만 병합하도록 하는 협업 도구이다.

따라서, 팀원들과 협업하거나 코드 리뷰가 필요한 경우 Pull Request를 사용하고, 개인적인 간단한 작업에는 Merge를 직접 사용하는 것이 효율적이다.


Pull Request 생성하는 법 (GitHub 기준)

1. 작업 브랜치 생성

작업할 브랜치를 먼저 만들고, 그 브랜치에서 코드를 수정해야 한다.
보통 main이나 dev 브랜치를 바로 수정하지 않고, 기능별로 브랜치를 따로 만든다.

git checkout -b feature-branch

이 명령어로 feature-branch라는 새로운 브랜치를 만들고, 그 브랜치로 이동한다.

2. 코드 수정 및 커밋

브랜치에서 필요한 코드를 수정한 후, 그 변경 사항을 커밋한다.

git add .
git commit -m "작업한 내용을 설명하는 커밋 메시지"

3. 원격 저장소에 푸시

로컬에서 작업한 브랜치를 원격 저장소로 푸시한다.

git push origin feature-branch

여기서 origin은 원격 저장소 이름이고, feature-branch는 현재 작업 중인 브랜치 이름이다.

4. GitHub에서 Pull Request 생성

  1. GitHub 사이트로 이동:
    GitHub에서 해당 프로젝트의 저장소로 이동한다.
  2. Pull Request 탭으로 이동:
    저장소 상단에 있는 Pull Requests 탭을 클릭한다.
  3. New Pull Request 클릭:
    New Pull Request 버튼을 클릭하여 새로운 Pull Request를 만든다.

5. Pull Request 설정

  • base:
    코드를 병합할 대상 브랜치 (예: main이나 dev).
  • compare:
    병합하려는 작업 브랜치 (예: feature-branch).

base 브랜치와 compare 브랜치를 확인하고, 병합하려는 브랜치가 맞는지 확인한다.

6. Pull Request 제목과 설명 작성

  • Title:
    Pull Request의 제목을 작성한다.
    예를 들어 "Add new feature to the project"와 같은 간단한 설명을 넣는다.
  • Description:
    작업한 내용을 설명하는 글을 작성한다. 어떤 변경이 있었고, 왜 이 변경이 필요한지를 설명하는 것이 좋다.

7. Pull Request 생성

설정이 완료되면 하단에 있는 Create Pull Request 버튼을 클릭한다.

8. 코드 리뷰 및 병합

  • 팀원이나 리뷰어들이 Pull Request를 리뷰한 후, 문제가 없다면 Approve(승인)를 해준다.
  • 승인이 완료되면 Merge 버튼을 눌러 브랜치를 병합할 수 있다.

요약:

  1. 새로운 브랜치에서 작업 (git checkout -b feature-branch)
  2. 작업한 코드 커밋 및 원격 저장소에 푸시 (git push origin feature-branch)
  3. GitHub에서 Pull Request 탭으로 이동하여 New Pull Request 클릭
  4. 병합할 브랜치 설정 (base와 compare 선택)
  5. PR 제목과 설명 작성 후 Create Pull Request 클릭
  6. 코드 리뷰 후 승인되면 병합

Pull Request가 중요한 이유:

  1. 코드 리뷰: 다른 팀원들이 코드를 검토하고 피드백을 줄 수 있다.
  2. 버그 방지: 병합하기 전에 코드의 문제점을 발견할 수 있어, 버그를 미리 방지할 수 있다.
  3. 협업 효율성: Pull Request는 작업 내용에 대해 명확한 기록을 남기고, 팀원들이 변경 사항을 쉽게 파악할 수 있게 도와준다.

이 과정을 통해 팀 프로젝트에서 코드의 질을 높이고, 협업을 원활하게 할 수 있다.

0개의 댓글