포크와 오픈소스 기여
5. 자주 하는 실수 (Tip)
❌ 실수 1. origin 과 upstream 을 반대로 착각
origin 은 내 포크, upstream 은 원본입니다. 반대로 알고 push 하면 원본에 권한이 없어 거부되거나, 반대로 포크에 있어야 할 커밋이 안 올라갑니다. git remote -v 로 항상 먼저 확인합니다.
❌ 실수 2. 포크의 main 에 직접 커밋
main 에 직접 커밋하면 다음 동기화 때 --ff-only 가 실패하고 충돌 처리가 필요해집니다. 작업은 항상 별도 브랜치에서 시작합니다.
❌ 실수 3. DCO 서명 없이 커밋해서 CI 실패
-s 를 빼먹으면 많은 프로젝트의 DCO 검사 CI 가 실패합니다. 이미 만든 커밋은 git commit --amend -s 로 서명을 추가하고 다시 push 합니다.
❌ 실수 4. 오래된 포크에서 새 브랜치 시작
동기화 없이 오래된 main 에서 브랜치를 만들면 관련 없는 충돌이 늘어납니다. 브랜치를 만들기 전에 fetch upstream 과 동기화를 먼저 합니다.
❌ 실수 5. rebase 뒤 일반 push 로 거부당하기
rebase 는 해시를 바꾸므로 일반 push 는 non-fast-forward 로 거부됩니다. --force 대신 --force-with-lease 를 씁니다.
❌ 실수 6. CONTRIBUTING.md 를 안 읽고 PR 부터 열기
프로젝트마다 커밋 메시지 형식, 테스트 요구사항이 다릅니다. 규칙을 어긴 PR 은 리뷰조차 받지 못하고 반려되기 쉽습니다.
❌ 실수 7. 여러 기능을 한 PR 에 묶기
하나의 PR 에 관련 없는 변경이 섞이면 리뷰가 어려워지고 반려 확률이 올라갑니다. 이슈 하나당 PR 하나로 작게 나눕니다.
❌ 실수 8. 병합 후 포크를 다시 동기화하지 않기
내 PR 이 병합돼도 포크의 main 은 자동으로 갱신되지 않습니다. fetch upstream 을 또 하지 않으면 다음 작업이 다시 뒤처진 상태에서 시작됩니다.
❌ 실수 9. 폐쇄망에서 gh CLI 를 실제로 실행하려 하기
gh 는 GitHub 서버와 통신해야 동작합니다. 인터넷이 없는 환경에서는 명령을 참고용 텍스트로만 쓰고, 웹 화면이나 사내 Git 서버의 대응 기능을 씁니다.
❌ 실수 10. 라이선스 확인 없이 코드 복사
포크해서 본 코드를 다른 프로젝트에 그대로 옮기면 라이선스 위반이 될 수 있습니다. LICENSE 파일의 조건을 먼저 확인합니다.