전에 Fork와 PR을 간단하게 코드로 설명하면서 진행했던 글이 있는데, 이번에는 조금 더 심화적으로 협업중 발생한 문제를 해결하면서 PR을 진행하는 과정에 대해 설명하도록 하겠습니다.
현재 장기간 Merge & PR을 하지않아, 원본 레파지토리의 히스토리가 쌓이고 Fork한 원격 레파지토리에서 새롭게 브랜치를 생성해서 커밋이 쌓인 상황입니다. 따라서 히스토리 충돌이 발생하지 않도록, 원본 레파지토리의 코드를 잘 가져와서 병합 후 PR을 요청하는 과정을 다뤄보도록 하겠습니다.
원본 레파지토리의 최신 코드를 가져오기 위해 "git fetch upstream" 명령어를 실행했는데 아래의 에러가 발생하였습니다.
확인해보니 upstream이라는 이름의 원격 저장소가 등록이 되지 않아 발생한 에러였습니다. "git remote -v" 로 확인 가능합니다. 원본 레포지토리를 upstream이라는 이름으로 추가해줍니다.
git remote add upstream https://github.com/원본유저/원본레포.git
이후 다시 git fetch upstream으로 원본 레파지토리의 변경사항을 가져와줍니다.
에러가 발생하지않고 명령어가 잘 작동한 모습인데, 로컬 코드와 히스토리가 변경된게 없어서 뭔가 잘못됐나?라는 생각을 했습니다. 찾아보니 원본 변경사항을 로컬 브랜치에 병합하는 추가 과정이 필요한 것이었습니다.
git checkout dev
git merge upstream/dev
따라서 내가 병합하고자 하는 브랜치로 이동한 후 원격 저장소에서 가져온 브랜치의 코드를 merge 해주면 되는 것 이었습니다. 이로써 1차적으로 원본 저장소의 코드를 로컬 저장소로 병합하였습니다. 이제 제 작업 브랜치로 이동해서 이 병합한 코드를 다시 머지해서 코드에 문제가 없는지 검증을 하였습니다.
git checkout feat/retrieve_docs
git merge dev
위 명령어들을 통해 제 작업 브랜치와 원본 저장소에서 가져오는 코드들이 병합 되다보니 당연히 충돌이 발생했고, 이 부분들을 수동으로 해결해주었습니다. 그리고 다시 실행하려는데 병합중 가상환경에 다운로드 된 패키지 항목이 달라지면서 Import 에러가 발생해 uv에 새롭게 패키지를 추가해주었습니다.
uv pip install 패키지명
이때 만약 uv 가상환경을 pyproject.toml 같은 의존성 파일로 관리하고 있을 경우, uv sync 의 명렁어 사용시 uv pip install로 설치한 패키지는 사라지기 때문에 필요에 따라 의존성 파일 자체에 패키지명을 기입하는 것도 좋은 방법입니다. 병합 후 파일을 실행해 오류없이 작동하는 것을 확인하면, dev 브랜치로 다시 이동해 기존 작업 브랜치의 코드를 다시 병합해 PR전 마지막으로 검토를 진행해줍니다. 이상이 없음이 확인되면 로컬 저장소의 코드를 원격 저장소의 코드로 Push 해줍니다. 그리고 깃허브 페이지로 가보면 저장소 상단에 PR 창이 뜨는데 안뜨길래 뭐가 문젠가 싶어서 직접 PR 생성 창으로 이동해보았습니다.
base와 compare이 동일한 dev 브랜치를 비교하고 있기 때문에 PR을 생성해도 변경사항이 없을 것으로 판단해 PR이 불가능한것으로 보였습니다.
그래서 compare across forks를 클릭해 fork를 한 원본 저장소의 브랜치를 지정하려했는데 이 부분이 잘 안됐습니다. 지정하고 싶은 브랜치명이 안나오길래 원인을 찾고 있었는데 원본 레파지토리의 Fork 목록에 카운팅이 사라진것을 확인했습니다.
그래서 Fork 연결이 끊겼나? 이런 생각이 들어 기존 코드들을 백덥해두고 레파지토리를 새롭게 만들어보았습니다. 기존 레파지토리를 사용해보려했는데 원본 저장소가 private -> public 으로 바뀌면서 혹시나 모를 key 유출을 대비해 새롭게 만들기로 하였습니다.
Push 후 PR 창을 들어가보니 위와같이 PR을 할 수 있는 이벤트가 생겼길래 이를 활용해 PR을 날려주었습니다.
'Git&GitHub' 카테고리의 다른 글
[GitHub] Fork & Pull Request (0) | 2025.04.09 |
---|---|
[Github] 잔디가 심어지지 않는 문제 해결하기 (0) | 2025.04.03 |
[Github 잔디 심기]티스토리 블로그 + Github 연동 (0) | 2025.03.21 |
[Git & GitHub] Branch와 Merge 과정 (2) | 2024.02.26 |
[Git & GitHub] Git 명령어 (0) | 2023.08.10 |