이 문서는 GitHub 프로젝트에 기여하는 방법을 안내합니다. GitHub를 통해 전 세계의 개발자들이 함께 소스 코드를 공유하고, 수정하며, 개선할 수 있습니다. 여러분의 기여는 프로젝트의 품질을 향상시키고, 더 많은 사용자들에게 유용한 도구를 제공하는 데 큰 도움이 될 것입니다.
- GitHub 웹사이트에 접속합니다.
- 화면 오른쪽 상단의 Sign up 버튼을 클릭합니다.
- 이메일 주소, 비밀번호, 사용자 이름을 입력하고 Create account 버튼을 클릭합니다.
- 이메일 인증을 완료하고, 프로필 설정을 마칩니다.
-
기여하고자 하는 GitHub 프로젝트의 저장소 페이지로 이동합니다.
-
화면 오른쪽 상단의 Fork 버튼을 클릭하여 자신의 GitHub 계정으로 저장소를 복사합니다.
-
포크한 저장소 페이지로 이동하여, Code 버튼을 클릭하고, 'HTTPS' URL을 복사합니다.
-
원하는 폴더에서 깃 배시를 열고, 다음 명령어를 입력하여 저장소를 클론합니다:
git clone '복사한 URL'
이슈는 프로젝트에서 발생하는 문제점이나 개선 사항을 기록하는 도구입니다. 이슈를 통해 프로젝트의 버그를 보고하거나 새로운 기능을 제안할 수 있습니다. 이슈는 프로젝트의 진행 상황을 추적하고, 기여자들 간의 협업을 촉진하는 데 중요한 역할을 합니다.
- 프로젝트의 GitHub 저장소 페이지로 이동합니다.
- 상단 메뉴에서 Issues 탭을 클릭합니다.
- New Issue 버튼을 클릭하여 새로운 이슈를 작성합니다.
- 이슈의 제목과 내용을 입력합니다. 가능한 한 구체적으로 문제를 설명하고, 재현 방법이나 스크린샷을 첨부하면 도움이 됩니다.
- 필요한 경우, 이슈에 라벨(Label)을 추가하여 이슈의 유형을 명확히 합니다.
- Submit new issue 버튼을 클릭하여 이슈를 제출합니다.
- 이슈 템플릿 사용: 일부 프로젝트는 이슈 템플릿을 제공하여 이슈 작성 시 필요한 정보를 쉽게 입력할 수 있도록 돕습니다. 적절한 이슈 템플릿을 사용하면 이슈 작성이 더 간편해지고, 필요한 정보가 빠짐없이 포함될 수 있습니다.
- README 및 CONTRIBUTING 파일에서 지침 확인: 이슈를 작성하기 전에 프로젝트 관리자가 정해놓은 지침을 확인하는 것은 중요합니다. 이는 프로젝트의 일관성을 유지하고, 기여자들이 프로젝트의 규칙을 준수하도록 돕기 위해서입니다.
Note
- 프로젝트의 GitHub 저장소 페이지로 이동합니다.
- 저장소의 루트 디렉토리,
docs
디렉토리, 또는.github
디렉토리에서CONTRIBUTING.md
파일을 찾습니다. CONTRIBUTING.md
파일을 열어 프로젝트에 기여하는 방법에 대한 지침을 확인합니다. 이 파일에는 이슈 작성, 코드 스타일, 커밋 메시지 규칙 등 기여와 관련된 중요한 정보가 포함되어 있을 수 있습니다.- 이슈 페이지 상단이나
README.md
파일에서 이슈 작성에 대한 추가 지침을 확인합니다. - 프로젝트 관리자가 이슈 작성에 대한 특정 규칙이나 제한을 명시해 놓은 경우, 해당 지침을 따릅니다.
- 필요한 경우, 프로젝트 관리자에게 문의하여 이슈 작성에 대한 추가 정보를 얻습니다.
브랜치는 독립적인 작업 공간을 제공하여, 원본 코드에 영향을 주지 않고 새로운 기능을 개발하거나 버그를 수정할 수 있게 합니다. 이를 통해 여러 개발자가 동시에 다양한 작업을 수행할 수 있습니다.
-
프로젝트의 로컬 저장소에서 깃 배시를 엽니다.
-
다음 명령어를 입력하여 새로운 브랜치를 생성합니다:
git checkout -b 브랜치이름
예:
git checkout -b feature/new-feature
-
주기적인 병합(Merge): 작업 중인 브랜치를 주기적으로 메인 브랜치와 병합하여, 최신 변경 사항을 반영하고 충돌을 최소화합니다.
-
브랜치 삭제: 작업이 완료된 브랜치는 삭제하여 저장소를 깔끔하게 유지합니다. 다음 명령어를 사용하여 로컬 브랜치를 삭제할 수 있습니다:
git branch -d 브랜치이름
예:
git branch -d feature/new-feature
-
브랜치 이름 규칙: 브랜치 이름은 작업 내용을 명확히 나타내도록 규칙을 정해 사용합니다. 예를 들어, 새로운 기능 개발은
feature/기능이름
, 버그 수정은bugfix/버그이름
과 같이 명명합니다.
-
깃 배시를 열고, 프로젝트의 로컬 저장소 디렉토리로 이동합니다.
-
수정하고자 하는 파일을 텍스트 에디터 또는 IDE에서 엽니다.
-
필요한 코드를 수정합니다.
-
수정이 완료되면, 터미널에서 다음 명령어를 입력하여 변경 사항을 확인합니다:
git status
-
변경 사항을 스테이징합니다:
git add 파일이름
예:
git add example.py
-
의미 있는 커밋 메시지를 작성합니다:
git commit -m "커밋 메시지"
예:
git commit -m "Fix bug in user authentication"
-
커밋 메시지는 변경 사항을 간결하고 명확하게 설명해야 합니다. 일반적으로 다음과 같은 형식을 따릅니다:
- 제목: 50자 이내로 간결하게 작성
- 본문: 필요할 경우, 변경 사항에 대한 자세한 설명을 추가 (72자 이내로 줄바꿈)
- 커밋 히스토리를 깔끔하게 유지하기 위해, 관련된 변경 사항을 하나의 커밋으로 묶습니다.
- 불필요한 커밋을 피하고, 의미 있는 단위로 커밋을 나눕니다.
- 커밋 메시지를 일관성 있게 작성하여, 히스토리를 쉽게 이해할 수 있도록 합니다.
-
깃 배시를 열고, 프로젝트의 로컬 저장소 디렉토리로 이동합니다.
-
다음 명령어를 입력하여 변경 사항을 원격 저장소에 푸시합니다:
git push origin 브랜치이름
예:
git push origin feature/new-feature
- 포크한 저장소의 GitHub 페이지로 이동합니다.
- 화면 상단의 Contribute 버튼을 클릭합니다.
- 드롭다운 메뉴에서 Open pull request를 선택합니다.
- 변경 사항에 대한 제목과 설명을 입력합니다. 가능한 한 구체적으로 변경 사항을 설명하고, 필요한 경우 스크린샷이나 추가 정보를 첨부합니다.
- Create pull request 버튼을 클릭하여 풀 리퀘스트를 제출합니다.
일부 프로젝트는 풀 리퀘스트 템플릿을 제공하여 풀 리퀘스트 작성 시 필요한 정보를 쉽게 입력할 수 있도록 돕습니다. 풀 리퀘스트 템플릿을 사용하면 풀 리퀘스트 작성이 더 간편해지고, 필요한 정보가 빠짐없이 포함될 수 있습니다.
- 풀 리퀘스트 생성: 변경 사항을 포함한 풀 리퀘스트를 생성합니다.
- 리뷰어 지정: 프로젝트 관리자가 리뷰어를 지정하거나, 기여자가 리뷰어를 요청할 수 있습니다.
- 코드 리뷰: 리뷰어는 풀 리퀘스트를 검토하고, 코드의 품질, 일관성, 기능성을 확인합니다. 필요한 경우, 코드 개선을 위한 피드백을 제공합니다.
- 피드백 반영: 기여자는 리뷰어의 피드백을 반영하여 코드를 수정하고, 다시 푸시합니다.
- 추가 리뷰: 수정된 코드에 대해 추가 리뷰가 필요할 경우, 리뷰어가 다시 검토합니다.
-
피드백 확인: 리뷰어가 제공한 피드백을 확인합니다.
-
코드 수정: 피드백을 반영하여 코드를 수정합니다.
-
커밋 및 푸시: 수정된 코드를 커밋하고, 원격 저장소에 푸시합니다.
git add 수정된파일 git commit -m "리뷰 피드백 반영" git push origin 브랜치이름
-
코멘트 추가: 필요한 경우, 풀 리퀘스트에 코멘트를 추가하여 리뷰어에게 수정 사항을 알립니다.
-
리뷰 완료: 모든 리뷰어가 코드 리뷰를 완료하고, 승인합니다.
-
병합 준비: 병합 전에 최신 변경 사항을 반영하기 위해 메인 브랜치와 병합합니다.
git checkout main git pull origin main git checkout 브랜치이름 git merge main
-
병합: 풀 리퀘스트 페이지에서 "Merge pull request" 버튼을 클릭하여 변경 사항을 메인 브랜치에 병합합니다.
-
브랜치 삭제: 병합이 완료된 후, 작업이 완료된 브랜치를 삭제합니다.
git branch -d 브랜치이름 git push origin --delete 브랜치이름
- 일관성 유지: 프로젝트의 코드 스타일 가이드를 준수하여 일관된 코드 스타일을 유지합니다. 이는 코드의 가독성을 높이고, 유지보수를 용이하게 합니다.
- 주석 작성: 코드의 중요한 부분이나 복잡한 로직에는 주석을 추가하여 다른 기여자들이 코드를 이해하기 쉽게 합니다.
- 코드 포맷팅: 코드 포맷팅 도구(예: Prettier, ESLint 등)를 사용하여 일관된 코드 포맷을 유지합니다.
- 존중과 배려: 모든 기여자는 서로를 존중하고 배려하는 태도로 협업합니다. 비판은 건설적으로 하고, 개인적인 공격은 피합니다.
- 포용성: 다양한 배경과 경험을 가진 사람들이 기여할 수 있도록 포용적인 환경을 조성합니다.
- 투명성: 프로젝트의 진행 상황과 의사결정 과정을 투명하게 공유합니다.
- 문서화: 새로운 기능이나 중요한 변경 사항은 문서화하여 다른 기여자들이 쉽게 이해할 수 있도록 합니다. README 파일이나 위키 페이지를 활용하여 문서를 작성합니다.
- 주석 작성: 코드의 중요한 부분이나 복잡한 로직에는 주석을 추가하여 다른 기여자들이 코드를 이해하기 쉽게 합니다.
- 예제 코드: 문서화 시 예제 코드를 포함하여 사용 방법을 명확히 설명합니다.