Github 오픈소스 기여방법[Pull request]
🔐 나도 기여해보자..!
GIT에 대해서 공부하다 보니 github에서 할 수 있는 다양한 것?들에 대해서 관심이 생겼다.
그중에서 전세계의 개발자들이 협업하는 방식인 pull request에 대해서 알아보려고 한다.!
사용 이유
오픈소스의 개념으로 많은 사람들이 해당 오픈소스를 클론 받아서 사용할 때 문제점을 발견했을 경우, 모든 사람이 해당 프로젝트에 기여할 수 없기 때문에 일종의 요청을 보내는 것!
현재는 다양한 방식으로 오픈소스 문화가 활성화 되어 있다.
여러 오픈소스 프로젝트 문제점부분을 이슈에 기재하여 다양한 항목들을 수정하거나 보완할 수 있다.
진행 방식
- 오픈소스를 하나씩 뜯어보다가 추가했으면 하는 내용이나 버그부분을 발견한다.
- 오타나 간단한 것도 가능 대부분은 이슈사항에 적혀있는 내용을 기반으로 이슈항목에 작성 후 풀리퀘스트를 보낸다고 함
- 해당 레포지토리를 fork받아서 로컬에 클론 받을 받는다..!
- 해당 레포를 클론 받는게 아닌 fork후 클론을 받아야한다.
- 원격 저장소의 remote를 추가하여 등록해준다.
- fork전 오리지널 원격 레포의 주소로 등록
- pull request용 임시 브랜치를 생성한다..!
- 필요한 디버깅이나 추가부분을 작성한뒤 커밋한다.
- 만들어진 브랜치에 push한다.
- pull request가 승인되었는지 기도하며 확인한다!
- 올바르게 병합되었으면 임시 브랜치를 제거하고 진행한다!
실습
실제로 테스트를 해볼려면 계정 두개로 테스트해야하기 때문에 임시 계정으로 테스트했습니다.
- 임시 계정에 존재하는 레포를 fork하여 remote repository로 가져온다!
해당 계정에서는 아래 원본 주소가 표시됨
fkdl0048은 사용자 즉, 자신의 레포라고 칭하고 fkdl000048은 원본레포 즉, 원본이라고 칭함
git clone 'fork한 자신의 레포주소'
git remote add '별칭' '원본의 레포 주소'
자신이 fork한 레포로 클론을 받은 뒤 원격 remote주소를 추가한다..!
이때, 주소는 원본의 레포주소로 연결해놔야 요청을 보낼 수 있다.
git remote -v
로 연결된 remote 주소를 확인했을 때 자동으로 clone할 때 생성된 origin과 다른 upstream은 fkdl000048에 연결되어 있음을 확인할 수 있다.
git checkout -b `풀 리퀘스트용 임시 브렌치 별칭`
git branch
‘별칭’후 checkout으로 이동해도 상관없지만 checkout에 -b 플래그를 사용하면 생성하면서 바로 이동이 가능하다.
이후 수정이나 추가작업을 진행한다.
-수정 후-
git add .
git commit -m "수정 커밋"
git push origin '풀 리퀘스트용 임시 브랜치 별칭'
정상적으로 push가 진행되었다면 자신의 fork레포에 Compare & pull request
버튼이 생성되었을 것이다.
해당 버튼을 눌러 들어가보면 qull request을 작성할 수 있는 페이지가 뜨게 된다.
형광팬으로 칠한 부분을 보면 base repository즉, 원본이 되는 레포지의 주소 fkdl000048계정의 pull_request레포의 base브랜치 master에 화살표로 들어오는 다시말해서 merge되는 head repository의 주소는 fkdl0048의 fork받은 pull_request 브랜치(임시)request_branch라는 것,,
다시 원본 레포로 돌아 오면 pull requests
항목에 1요청이 들어와있는 걸 확인할 수 있고 해당 페이지로 이동하면 위와 같은 화면이 뜬다
commits
버튼에 들어가게 되면 위와 같은 화면이 뜨는데 Review changes
를 클릭하여 코드에 대한 리뷰를 남길 수 있는다.
- Comment는 코드가 마음에 들지 않을 때 사용할 수 있으며
- Approve는 코드가 도움이 되어 사용하게 될 때
- Request changes는 변경사항을 다시 요청할 수 있다.
따라서 Approve버튼을 눌러서 리뷰를 남긴다.
이 merge는 빠른 병합이 가능하기 때문에 따로 경고 없이 바로 병합이 가능하다.!
Merge pull request
를 클릭하여 변경된 내용을 확인한다..! (성공)
이후에는 사용한 임시브랜치를 삭제해야하기 때문에 원본을 pull로 가져와서 동기화를 진행한 뒤 해당 브랜치를 삭제한다..!
브랜치를 삭제하는 이유는 임시브랜치의 성격이 강하기도 하고 pull request는 보고서성격을 가진다.
삭제하기 전에 임시 브랜치가 아닌 다른 브랜치로 checkout해야한다.
git remote add upstream '원본 레포의 주소'
git fetch upstream
git merge upstream/master
git branch -d '임시 브랜치 명'
다른 수정 사항이 생기면 똑같이 새로운 임시 브랜치를 만들어서 request를 넣어주면 된다..!
42서울 과제 한국어 번역 레포에 PullRequset를 보냈는데 성공한 모습..!
처음으로 오픈소스에 기여해봤다..!
댓글남기기