ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Git] git 사용법 튜토리얼6 - 오픈 소스 기여하기
    👀 etc... 2021. 4. 12. 00:10

     


     

    git 사용법 튜토리얼 시리즈

     

    1 초기화, 스테이징, 커밋, 되돌리기 

    2 깃 브랜치(branch) 같은 파일로 여러 버전 만들기 

    3 깃허브와 연동하기

    4 브랜치 원격에서 다루기

    5 PR (Pull Request) & Issue

    6 오픈 소스 기여하기

     


    1-5포스팅까지 내용 정리

    명령어 내용
    git clone Remote(원격저장소, 깃허브) 레포지토리의 내용을 복제
    git push Remote(원격저장소, 깃허브) 레포지토리로 내용을 보냄
    git pull Remote(원격저장소, 깃허브) 레포지토리의 내용을 가져옴
    git fetch Remote(원격저장소, 깃허브) 레포지토리에서 변경 내용 가져옴
    git fork git clone 처럼 레포지토리를 복제하나 원래의 원본 레포와 연결되있어 변화 반영이 가능하다.(fetch, rabase 필요)
    그 외.. merge, rebase, fetch, checkout, diff, stash, reset, clean, log

     

     


    git 튜토리얼 포스팅의 마지막 단계, github 프로젝트(또는 오픈소스 프로젝트)에 기여하기.

     

    '오픈 소스'는 누구나 소스코드를 개선하고, 보고 수정하고, 배포할 수 있다는 의미이며 유명한 프로젝트에 기여(버그 수정, 드라이버 개발, 기능 추가 등)하여 이름을 알릴 수 있는 기회가 될 수도 있습니다..! 또는 자신의 소스코드를 다른 사람이 업그레이드할 수 있도록 열어놓을 수도 있습니다. 단지 오류를 보고하는 것, 코드를 정리하거나 오타를 수정하는 것만으로도 원천 소스 코드 저자에게 도움이 될 수 있다고 하니 부담갖지 않고 작은 일부터 시작해봅시다.

    오픈 소스 프로젝트에 기여해서 원본 소스코드의 저자(Author) 항목에 기여자(Contirbutor) 또는 커미터(Commiter)가 되봅시다.

     

     

    오픈 소스 프로젝트를 찾는 방법은 구글링 하거나, 깃허브의 오픈소스 저장소페이지에서 찾아도 되고

    또는 내가 평소에 눈여겨 보던 프로젝트나 다른 사람이 만들어 놓은 라이브러리를 "Fork"한 뒤 "Pull Request"를 보내서 기여할 수도 있습니다. 꼭 코드를 추가하거나 수정하는 것이 아니어도 번역 같이 다른 작업으로 기여할 수도 있습니다.

     

    오픈소스에 참여하는 방법

    • 버그 리포트
    • 커뮤니티 활동을 통한 의견 교류
    • 프로젝트 문서 수정 또는 번역
    • 기능 등록 및 수정 요청
    • 패치 요청
    • 커미터 또는 컨트리뷰터 활동
    • 번역

     


     

    GitHub 오픈 소스 프로젝트에 기여하는 방법

     

    먼저 기여하고 싶은 git 레포지토리를 찾았다면 해당 레포지토리에서 Fork 버튼을 눌러 내 github에 똑같은 프로젝트가 다운 받아지도록 합니다. 그리고 이제 코드를 수정해서 pull request를 보내면 되는데, github 인터페이스에서 바로 코드를 수정해도 되지만, 보통은 환경을 설정해야 하기 때문에 해당 프로젝트를 내 로컬에 clone하여 다운받아 환경을 설정합니다. 친절하게 도커파일이나 yml, requirements.txt 같은 환경관련 파일을 생성해놓은 저자(원천소스제공자)도 있겠지만 그렇지 않다면 직접 환경을 구축해야 합니다.

     

    Flow

    1. 프로젝트를 Fork 한다.
    2. master 기반으로 토픽 브랜치를 만든다.
    3. 뭔가 수정해서 커밋한다.
    4. 자신의 GitHub 프로젝트에 브랜치를 Push 한다.
    5. GitHub에 Pull Request를 생성한다.
    6. 토론하면서 그에 따라 계속 커밋한다.
    7. 프로젝트 소유자는 Pull Request를 Merge 하고 닫는다.

     

    git clone https://github.com/내닉네임/Fork한레포명

    클론명령어로 내 로컬에 Fork한 레포지토리를 다운 받습니다.

     

     

    git checkout -b docker-branch

    그리고 수정한 내용을 반영한 토픽 브랜치를 하나 생성합니다. 저는 Dockerfile을 수정했으므로 이름을 docker-branch라고 했고, 토픽 브랜치 명은 수정 또는 개발한 기능 토픽과 관련된 네이밍을 붙여주면 좋습니다.

     

    docker-branch라는 이름의 브랜치를 생성하고 해당 브랜치로 이동

     

     

    Git 브랜치 관련 명령어

    • git branch // 브랜치 확인
    • git branch 브랜치명 // 브랜치 생성
    • git branch -D 브랜치명 // 브랜치 삭제
    • git checkout 브랜치명 // 해당 브랜치로 이동
    • git checkout -b 브랜치명 // 생성과 동시에 이동

     

    Git 브랜치 종류

    • Master Branch : 메인 브랜치
    • Integration Branch : 배포버전 브랜치
    • Topic Branch : 단위 작업을 위한 브랜치

     

     

    git diff // 변경 사항 확인
    git diff filename // 해당 파일 변경 사항 확인
    git diff --cached // 이전 Commit 내용과 변경사항 비교
    git diff --cached filename // 해당 파일 이전 Commit 내용과 비교
    /* 변경사항 확인 했으면 q 버튼을 눌러 꺼줍니다 */

    git diff 명령어로 변경 사항을 확인하고, 

     

     

    git add 수정한파일명
    git commit -am "commit massage"
    git push origin 토픽브랜치명

    add commit push 까지 해줍니다. 명령어에서 옵션이 생각이 나지 않을 때는 명령어 --help로 옵션을 확인하면 됩니다. (예, git commit --help)

     

     

    Compare & pull request

     

    그리고 내 github fork한 레포지토리에 들어가보면 Compare & pull request 버튼이 활성화되어 있는 것을 볼 수 있습니다.

     

     

     

     

    Pull request 버튼을 클릭하면 Pull request의 제목과 설명을 입력하는 화면이 뜨고 내가 수정한 코드가 반영이 될 수 있도록 원본 소유자에게 pull request를 보낸 이유와 코드에 대한 설명 얼마나 이것이 가치 있는지 공들여 작성해야 한다고 합니다.

     

    제목과 설명을 작성하고 pull request를 보내면 원본 소유자가 알림을 받고, 해당 Pull request의 변경사항, 설명까지 모두 볼 수 있는 링크가 전송됩니다. 원본 소유자는 이를 바로 Merge하여 원 프로젝트에 반영할 수도 있고 거절하거나 혹은 코멘트를 작성할 수도 있습니다.

     


     

    출처 git 문서

    그리고 Pull Request 토론 페이지라는 것이 있는데 이를 보고 코드를 더 수정하거나 고도화 시킬 수 있습니다.

    토론 페이지와 작성시 사용하는 Markdown 문법에 대해 더 자세히 알아보고 싶다면 아래 걸린 git 공식문서를 참고해주세요.

     

    ISSUE

    내가 기여하고 싶은 내용을 프로젝트를 살펴보며 생각할 수 있다면 좋겠지만, 그렇지 않을 경우 레포지토리의 ISSUE 페이지에서 발행된 이슈들을 살펴보며 기여할 내용을 찾아봐도 됩니다. 위 그림의 저자는 Open Source Guide까지 제공하고 있고 이처럼 원 저자가 가이드를 제시한 경우 이에 맞춰서 Pull request를 보내야 합니다.

     

    이슈 중 코드 수정이나 오류, 고도화 등 기능 개발이 필요한 Issue가 아닌 단순 질문글도 있으니 내가 아는 내용이라면 답변을 달아주는 것도 실력 향상에 도움이 되지 않을 까 싶습니다.

     

     


     

    References 

     

    git 브랜치 - 브랜치 워크플로

    오픈소스에 기여하는 방법에 대하여

    git 문서

    댓글

Designed by Tistory.