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