홈 › GitHub › 05 / 5

포크와 오픈소스 기여

섹션 7진행 0 / 5

4. 응용 변형 예제

4.1 이미 clone 된 저장소를 포크 워크플로로 전환

원본을 직접 clone 해버린 뒤 뒤늦게 포크했다면, 원격 주소만 바꿔 끼우면 됩니다.

bash
git remote rename origin upstream
git remote add origin <내 포크 주소>
git push -q -u origin main

이후 흐름은 처음부터 포크를 clone 한 경우와 같습니다.

4.2 release 브랜치까지 함께 동기화

원본이 main 외에 release/1.x 같은 유지보수 브랜치를 운영한다면 해당 브랜치도 개별로 맞춥니다.

bash
git fetch upstream release/1.x
git switch -c release/1.x upstream/release/1.x
git push -q -u origin release/1.x

브랜치마다 upstream/<이름> 을 기준으로 새로 만들면 됩니다.

4.3 CLA 봇이 있는 프로젝트

DCO 대신 CLA(기여자 라이선스 동의서) 봇을 쓰는 프로젝트도 있습니다. PR 을 열면 봇이 서명 링크를 댓글로 남기며, 이 경우 commit -s 는 필요 없고 링크를 열어 한 번만 동의하면 됩니다. CONTRIBUTING.md 에 어느 방식인지 반드시 적혀 있습니다.

4.4 초안 PR 로 미리 리뷰 받기

기능이 완성되지 않았지만 방향을 먼저 확인받고 싶을 때는 초안(draft) PR 을 엽니다.

bash
gh pr create --draft --base main --head mydev:feat/wip --title "WIP: 초안"

초안 PR 은 병합 버튼이 비활성화되어, 실수로 미완성 코드가 합쳐지는 사고를 막습니다.

4.5 크게 뒤처진 포크를 통째로 재동기화

몇 달간 방치해 main 에 확인이 필요한 잔여 커밋이 남아 있다면, rebase 대신 upstream 상태로 강제로 맞춥니다.

bash
git fetch upstream
git switch main
git reset --hard upstream/main
git push --force-with-lease origin main

main 에는 원래 내 커밋을 두지 않는 것이 원칙이므로, 이 방식이 더 간단하고 안전합니다.