vcs/git

github.com 프로젝트 참여 - 정리 메모

C/H 2020. 2. 13. 10:17

github.com 프로젝트 참여

깃허브 오픈소스 프로젝트에 참여하기내용을 나에게 맞는 포멧으로 정리한 내용이다.
좀 더 정확한 내용과 실습을 위한 저장소는 해당 포스트에서 찾을 수 있다.

깃허브 Fork

https://github.com/ 에서 참여할 프로젝트를 선택후 Fork버튼으로 해당 프로젝트와 동일한 자신의 저장소를 만든다.

깃허브 Clone

Clone으로 자신의 Local PC에 다운로드 한다.

git clone https://github.com/<user_name>/<repository_name>.git

깃허브 Issue

  1. 참여한 원본 프로젝트 Issue탭에서 Open중인 issue를 확인한다.
  2. good first issue태그가 있는 이슈는 처음 참여(컨트리뷰션)하기 좋다는 의미다.
  3. issue를 선택한 후 Assignees기능을 통해서 자신에게 해당 이슈를 배당(assign)한다.(혹은 issue에 본인을 assign한다.)

깃허브 Branch

  1. 대체로 masterproduction 환경에서 release 인 경우가 많기 때문에 작업(코딩)을 위해서 branch off를 한다.

     cd repository_name
     git branch
    
     feat/dev
     * master
     (END)  #:q

    개발자를 위한 feat/dev branch가 존재한다.
    개발자를 위한 branch가 없다면 branch를 생성한다.

           ------------------- feat/dev
         /
     ---*--------------------- master
  2. feat/devcheckout한다.

     git checkout -b feat/dev
     Switched to branch 'feat/dev'
     Your branch is up to date with 'origin/feat/dev'.

    이 상태에서 작업을 하면 다른 개발자가 작성한 코드와 정리되지 않은채 충돌이 발생하기 쉽고, 대체로 충돌 문제를 해결하기 위한 노력은 기하급수적으로 늘어날 수 있다.

  3. 이제 자신의 프로젝트 관리를 위해서 <상위 브랜치>/<프로젝트>-<이슈넘버>로 구성되는 branch를 만들어서 개발한다.

     git checkout -b feat/refact-1
     Switched to a new branch 'feat/refact-1'
             ----------------- feat/refact-1
           /
          *------------------- feat/dev
         /
     ---*--------------------- master

    이제 feat/refact-1에서 작업할 수 있다.
    이제 다른 참여자와 분리되어 개발이 가능하므로 commit, push를 원하는 만큼 마음대로 할 수 있다.

  4. commit 제목은 Issue제목으로 commit한다.

     git commit -m "refact-1:write issue title"
  5. remote push
    자신의 github 저장소에 branch가 push된다.

     git push --set-upstream origin feat/refact-1
    
     Counting objects: 6, done.
     Delta compression using up to 4 threads.
     Compressing objects: 100% (6/6), done.
     Writing objects: 100% (6/6), 582 bytes | 582.00 KiB/s, done.
     Total 6 (delta 2), reused 0 (delta 0)
     remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
     remote:
     remote: Create a pull request for 'feat/refact-1' on GitHub by visiting:
     remote:      https://github.com/<user_name>/<repository_name>/pull/new/feat/refact-1
     remote:
     To https://github.com/<user_name>/<repository_name>.git
    
     * [new branch]      feat/refact-1 -> feat/refact-1
     Branch 'feat/refact-1' set up to track remote branch 'feat/refact-1' from 'origin'.

    github의 저장소엣 Branch를 확인하면 push한 내용을 확인 할 수 있다.

     feat/dev
     feat/refact-1
     * master
  6. feat/refact-1feat/dev 브랜치에 합져지도록 merge요청한다.
    프로젝트 관리자나, 리드 개발자에게 Pull Request를 요청한다.

    1. github.com 저장소 상단 Compare & pull request버튼을 선택한다.
    2. 브랜치 오프(branch off)한 상위 branch base: feat/dev를 확인한다.
    3. Pull Request 제목과, 내용을 적고 변경내용을 다시 한번 더 확인한다.
      Pull Request 작성 방법은 프로젝트(오픈소스)마다 다르므로 확인후 진행한다.
    4. Create pull request 버튼으로 요청한다.
              ---------*       feat/refact-1
            /           \                        #Pending review...
           *------------------- feat/dev
          /
      ---*--------------------- master

깃허브 Review

리뷰상태에서는 참여자가 할 수 있는 일은 없다.
버그나, 다른 어떤 이유로 Reject을 당해도 걱정하지 마라.
이유 없이 Pull Request가 거부 당할 경우는 없고, 거부 사유가 있다면 그에 따라 수정하면 된다.
리뷰가 끝나면 프로젝트 관리자는 코드를 base에 merge하고, Pull Request를 닫는다.

        --------*         feat/refact-1
      /          \
     *------------*------ feat/dev
    /
---*--------------------- master
반응형

'vcs > git' 카테고리의 다른 글

Remove file in All Commits  (0) 2021.12.16
SVN과 Git 동기화  (0) 2021.12.16
비트버킷 저장소 크기 줄이기  (1) 2020.02.03
git reset, 복원  (0) 2019.07.19
github.com 탈퇴, 재가입  (0) 2019.02.21