* 단시간에 작성된 글로 추후 수정 및 검토 예정입니다
개발자라면 모르면 안되는~
그치만 매번 헷갈리는..
GitHub 협업하기
초보자나, 익숙해도 헷갈리는!
모든 사람들을 위해 작성하는 글
1. issue 등록하기
내가 만약
"블로그 자유게시판을 만들거다!"라고 한다면
추가해야 하는 기능은
1. 게시글 CR
2. 게시글 UD
3. 댓글 기능 정도
PR과 커밋은 작은 단위(300줄~500줄 사이라고 어디서 봤는데..)가
코드리뷰어에게도 좋고, 팀원들의 코드 읽는데도 도움을 주기 때문에
1번 2번을 먼저 개발하기로 하자
우리 팀은 해당과 같이 기능 추가 및 코드 구현 시 사용하는
'공용 이슈 템플릿'이 있다.
(템플릿을 사용하고 싶으면 .github/ISSUE_TEMPLATE 폴더에 마크다운 형식으로
원하는 이슈 템플릿을 추가하면 됨 - 이건 우리 팀은 이미 완료!)
내가 개발해야 되는 기능이 위의 1번, 2번이니까
팀의 이슈 컨벤션에 맞춰 작업하기 전 작성한다.
그럼 개발 시작 전 가장 먼저 해야되는 이슈 등록하기 끝!
2. branch 만들기
우리는
1. main branch -> 배포 용으로 사용
2. dev branch -> 개발 브랜치
로 기본 브랜치가 있고,
기능에 따라서 각자 브랜치를 만들기로 했다.
git-flow 관련 유명한 글이 있어 첨부한
https://techblog.woowahan.com/2553/
우린 Git-flow를 사용하고 있어요 | 우아한형제들 기술블로그
안녕하세요. 우아한형제들 배민프론트개발팀에서 안드로이드 앱 개발을 하고 있는 나동호입니다. 오늘은 저희 안드로이드 파트에서 사용하고 있는 Git 브랜치 전략을 소개하려고 합니다. '배달
techblog.woowahan.com
팀 organization에서 Repository를 로컬로 가져오고, 작업 브랜치를 만드는 과정은 다음과 같다!
로컬에 우선 repoistory를 clone하고,
git clone https://github.com/your-team/project.git
develop branch를 pull 받고
git checkout dev
git pull origin dev
내가 이슈에 작성한 기능을 바탕으로 branch를 만든다!
위에서 블로그 CRUD를 만들기로 했으니까
feat/blog 혹은 feat/blog-crud 라는 브랜치를 만들면 된다!
git checkout -b feat/blog-crud
branch 생성 한 후에 커밋해도 되고, 바로 코드 구현을 해도된다
커밋을 하고 싶다면?
커밋은 우리가 기존 코드 구현 후 작성하는 것과 동일하다
git add .
git commit -m "Feat: 블로그 기능 구현 초기 세팅"
git push origin feat/blog-crud
만약 이때
이렇게 뜬다면 당황하지말고!
git push --set-upstream origin feat/blog-crud
를 통해 branch를 올리면 된다
그럼 이제 코드 구현할 준비는 됐다!
주의할 점은 항상 코드 구현 하기 전에
pull을 받아서 최신 상태에서 작업하여 conflict를 최소화할 것!
dev branch의 최신 업데이트 사항을 내 브랜치로 옮기고 작업하자
git pull origin dev
3. 코드 작성 후 PR 하기
이제 자유롭게 코드를 작성하고
커밋을 하면?
우리의 feat/blog-crud 에는 우리가 작업한 코드가 올라가 있을 것이다.
하지만? dev branch에는 우리가 작업한 것이 전혀 반영이 되어 있지 않다!
feat/blog-crud ------ Pull Request ------> dev
PR(Pull Request)를 통해 dev branch 에 코드를 적용시켜줘야 한다.
** 이때 주의해야할 점은 만약 팀에서 dev / prod(main) branch를 나눠서 쓸 경우
꼭 PR은 개발 branch인 'dev' branch로 날려야 한다.
내가 만약 작업을 잘 했다면!
상단에 노란색 표시로 Pull Request 요청 혹은
Contribute를 누르면 Open pull reqeuest 버튼이 뜰 것이다
(사진은 feat/main -> dev 로 PR을 날리는 예시이니 혼동하지 말 것!)
우리 팀은 초기에 PR 도 컨벤션을 아래와 같이 정했다!
## #️⃣연관된 이슈
> ex) #이슈번호, #이슈번호
## 📝작업 내용
> 이번 PR에서 작업한 내용을 간략히 설명해주세요(이미지 첨부 가능)
## 이후 작업
> 이후에 작업할 내용을 추가해주세요
- [ ] 대댓글 기능 구현
## 💬리뷰 요구사항(선택) 및 기타 참고사항
> ex) 실행 시 yml 파일 필요합니다.
## ✅ 체크리스트
- [ ] 코드 점검 완료했습니다
- [ ] 문서/주석 최신화 완료했습니다
이때 우리는 1번에서 작성한 이슈 번호를 연관 지어 PR에 넣어
어떤게 변경 되었는지 쉽게 확인하기로 했으므로
이슈 넘버도 같이 제목 및 내용에 넣어주면 된다.
이슈는 이슈 페이지에서 # 뒤에 붙은 번호!
그럼 이제 양식에 맞게 작성하고
Create Pull Request를 누르면 PR완료!
이렇게 하면! GitHub, branch 전략을 사용한 협업 완성~
이후에는 각 팀마다 merge 담당자가 있기도 하고,
코드 리뷰를 2명이상 받거나,
아래와 같이 approve를 2명 이상 받으면 마지막 사람이 merge 해주는 등
다양한 방법이 있다!
단순히 내 코드만 작성하는 것이 아니라
상대방의 코드를 읽고, 코드리뷰를 하면서
협업의 진짜 맛을 느껴보자(?)
그럼 끝!
*오류, 오타가 있으면 제보 부탁드립니다 🫱🏼🫲🏻🙆🏼♂️