Git Fork 프로젝트 Merge Request 보내는 방법
Git Fork 프로젝트 Merge Request 보내는 방법
Git에서 포크된(Forked) 코드를 원본 코드(Upstream)와 동기화하고 머지 요청(Merge Request)을 보내는 과정은 오픈소스 프로젝트에 기여할 때 중요한 단계입니다. 이 과정을 시각적으로 이해하기 위해 포크된 리포지토리와 원본 리포지토리의 구조를 함께 살펴보겠습니다.
Git Fork 프로젝트를 원본 코드와 동기화하고 Merge Request 보내는 방법
1. 프로젝트 Fork하기
먼저 기여하고 싶은 프로젝트를 GitHub에서 찾은 후, 프로젝트를 자신의 GitHub 계정으로 포크(Fork)합니다. 이렇게 하면 해당 프로젝트의 복사본이 자신의 GitHub 리포지토리로 생성됩니다.
Git 구조 시각화 (초기 상태)
Original Repo (Upstream)
├── main
Forked Repo (Your Repo)
├── main
포크한 후에는 원본 프로젝트(Upstream Repo)와 자신의 리포지토리(Forked Repo)가 동일한 상태입니다.
2. 로컬 환경에 Forked 리포지토리 클론
포크한 프로젝트를 자신의 로컬 환경으로 클론(Clone)합니다.
git clone https://github.com/your-username/forked-repo.git
your-username
에는 자신의 GitHub 사용자 이름을 넣고, forked-repo
에는 포크한 리포지토리 이름을 넣습니다. 클론한 디렉터리로 이동합니다.
cd forked-repo
Git 구조 시각화 (클론된 후)
Original Repo (Upstream)
├── main
Forked Repo (Your Repo)
├── main
Local Repo (Your Local)
├── main
로컬 리포지토리는 Forked Repo의 복사본입니다. 현재까지는 원본 코드와 동일한 상태입니다.
3. Upstream 원본 리포지토리 설정
이제 원본 리포지토리(Upstream)를 설정해야 합니다. Upstream 리포지토리는 포크한 원본 프로젝트를 가리킵니다. 이를 통해 최신 변경 사항을 동기화할 수 있습니다.
git remote add upstream https://github.com/original-owner/original-repo.git
original-owner
와 original-repo
에는 원본 프로젝트의 소유자와 리포지토리 이름을 넣어줍니다.
Git 구조 시각화 (Upstream 추가)
Original Repo (Upstream) <- Upstream
├── main
Forked Repo (Your Repo) <- Origin
├── main
Local Repo (Your Local)
├── main
Upstream 리포지토리가 추가되면, 이제 원본 프로젝트와 동기화할 수 있는 준비가 완료됩니다.
4. Upstream 리포지토리와 동기화
이제 원본 프로젝트의 최신 변경 사항을 로컬 리포지토리에 반영해야 합니다. Upstream 리포지토리에서 변경 사항을 가져와 현재 브랜치에 병합할 수 있습니다.
git fetch upstream
git checkout main
git merge upstream/main
위 명령어는 upstream
에서 최신 변경 사항을 가져온 후, 현재 브랜치(main
)에 병합하는 작업을 수행합니다.
Git 구조 시각화 (Upstream과 동기화된 후)
Original Repo (Upstream)
├── main (updated)
Forked Repo (Your Repo)
├── main
Local Repo (Your Local)
├── main (updated)
이제 로컬 리포지토리와 원본 리포지토리의 코드가 동기화되었습니다.
5. 충돌 해결 (Conflict Resolution)
병합 과정에서 충돌이 발생할 수 있습니다. 이 경우, 충돌 파일을 수정하고 병합을 완료한 후 커밋합니다.
git add .
git commit -m "Resolved merge conflicts"
6. 로컬 변경 사항을 Forked 리포지토리에 Push
동기화된 코드를 자신의 GitHub 리포지토리(Forked 리포지토리)로 푸시합니다.
git push origin main
Git 구조 시각화 (Forked Repo에 Push 후)
Original Repo (Upstream)
├── main (updated)
Forked Repo (Your Repo)
├── main (updated)
Local Repo (Your Local)
├── main (updated)
로컬에서 동기화한 내용을 자신의 포크된 리포지토리로 푸시하면 모든 것이 최신 상태로 유지됩니다.
7. Merge Request(Pull Request) 생성
이제 원본 프로젝트로 변경 사항을 요청하는 머지 요청(Merge Request, 또는 Pull Request)을 생성할 준비가 되었습니다. GitHub로 가서 포크한 리포지토리로 이동한 후, “New Pull Request” 버튼을 클릭합니다. 요청 내용을 작성하고 제출하면 됩니다.
8. PR 검토 및 병합
원본 프로젝트의 관리자가 PR을 검토한 후, 피드백을 줄 수 있습니다. 필요한 경우 추가 수정 후 다시 푸시하면 PR이 자동으로 업데이트됩니다. 관리자가 승인하면 코드가 원본 프로젝트에 병합됩니다.