Fork는 협업을 직접 push가 아니라 요청으로 바꿔
Fork-and-pull 방식은 쓰기 권한이 없는 프로젝트에 기여하는 오픈소스의 기본 흐름이야. 프로젝트를 네 계정으로 fork하고, fork의 branch에서 변경한 뒤, Pull Request로 원본 maintainer에게 가져가 달라고 요청해. 원본 repo에 push 권한을 줄 필요가 없어. PR이 직접 push를 대신하는 요청과 검토의 통로가 되니까.
GitHub의 "Fork" 버튼은 네 계정에 server-side 사본을 만들어. 그 fork를 로컬로 clone하고 원본을 두 번째 remote, 관습적으로 upstream으로 추가해. 이후에는 upstream을 fetch하고 fork의 main을 맞춘 뒤, 작업 branch를 갈라 fork에 push하고 GitHub에서 PR을 열어. PR description에는 무엇을 왜 바꿨는지, 어떻게 검증하는지, 어떤 위험이 있는지를 적어.
Fork를 원본과 맞춰두는 일도 중요해. 너무 오래된 base에서 만든 PR은 불필요한 conflict를 만들거든. git fetch upstream, git switch main, git rebase upstream/main, git push origin main 순서로 움직이면 fork의 main이 원본을 비춰. 이때 main에서 branch를 만들면 깔끔하게 적용되는 PR이 돼. GitHub web의 'Sync fork' 버튼도 같은 일을 해.
PR 자체도 협업 산출물이야. 제목은 명령형으로 쓰고 가능하다면 Conventional Commits prefix를 붙여. description에는 what, why, how to test를 구획으로 나누고, 시각적 변경이면 screenshot을, breaking change면 명시적인 경고를 넣어. issue도 연결해. 한 PR에는 한 관심사만 담아. 검토자가 comment하면 같은 branch에 commit을 더 push해 PR을 갱신하고, 승인 뒤 maintainer가 merge하면 양쪽 branch를 정리해.