
가장 중요한 부분입니다.
이것만 할 줄 알면 git을 거의 다 할 줄 안다고 보면 됩니다...ㅎㅎ
git flow workflow 방식, fork and merge 방식을 이용 할 것 입니다.
협업은 팀장이 해야 할일, 팀원이 해야 할일로 나누어 볼 수 있습니다.
먼저 팀장이 해야 할 일 부터 보겠습니다.
팀장이 해야 할일
- new organization을 생성합니다. (나오는거 다 skip해도 됩니다.)
- people 탭에서 팀원들을 invite합니다.
- 프로젝트 repo를 생성합니다.
- Issues (해야할일, 버그 ,제안들을 모두 list up하는 공간) 템플릿을 만들어 줍니다.
- setting → feaure→ isuue template→ custom template → 연필모양→ 이름지정 → content( 설명, 할일, 참조 ) → close preview하면 저장 됨 → propose changes → commit → issue template 디렉토리 생김
- 프로젝트 repo url을 복사합니다.
- local에 clone합니다.
- git flow init으로 develop 브랜치를 생성합니다.
- 프로젝트를 set up합니다.( 파일 하나 만들고 실행 확인, add, commit)
- 처음 만든 브랜치에서 push하는 거니까 git push -u origin develop 해줍니다.
- 이 상태로 팀원들에게 오픈합니다.
- 팀원들을 초대할 때 triage를 선택합니다.
- 팀원이 pull request를 날리고 난 후
- comment를 씁니다.
- File changed 메뉴에서 코드를 확인하고 코드리뷰를 합니다.
- Finish your review버튼을 클릭하고 세 메뉴 중 하나를 선택합니다.
- comment - 단순 의견
- approve - 승인
- 마지막- 변경 사항 받아주기 전까지 안해주겠다.
- merge pull request
다음은 팀원이 해야 할 일입니다.
팀원이 해야 할일
- 팀장이 보낸 초대 메일을 확인하고 수락합니다.
- issues를 작성하여 내가 할 일을 미리 적어 놓습니다. ( 팀장이 만들어 놓은 템플릿 선택해서 쓰면 됩니다.)
- Fork 를 합니다. ( fork로 내가 안전하게 쓸 repo를 만듭니다. 간접적인 방식의 기여를 지향합니다.)
- copy the brancy only 체크를 해제합니다.
- 내 fork url을 local에 clone합니다. ( 내 권한이 된 저장소를 가지고 와서 일을 합니다. )
- git flow init을 하면 팀장이 만들어뒀던 것들이 나에게도 반영됩니다. (fork remote에?? develop브랜치가 없었는데 생김??)
- git remote -v로 현재 연결된 repo를 확인합니다.
- origin이 내 fork remote repo일 것이다.
- 프로젝트 repo( organization의 repo) url을 복사합니다.
- git remote add upstream '복사한 url'을 합니다.
- 그러면 upstream은 팀의 remote repo를 의미합니다.
- 작업하기
- git flow feature start fb-gi-for
- fizzbuzz.py 수정합니다.
- add, commit을 반복하며 작업합니다.
- local의 develop에서 내 fork remote repo의 develop 으로 보내줍니다.
- git flow feature finish fb-fi-for
- git push -u origin develop (처음이라 혹시 몰라서 -u) 이 과정 전에 pull을 추천합니다!!
- 이것을 팀장한테 전달하여, 프로젝트 repo( organization의 repo)로 pull ?? 할 수 있게 합니다.
- 세가지 방법이 있습니다.
- Compare & pull request 누르기 <이거 선택>
- contrivute ??
- pull request 메뉴에서 New Pull Request 생성
- 나의 develop에서 팀의 develop으로 가는건지 확인합니다.
- Title과 내용을 적습니다.
- 내용 맨 밑에 [ resolve : 해결할때, fix : 고칠때, clost: 별다는 문제 아닐때 ] 중 하나를 선택하여 #이슈넘버를 넣으면 이슈해결 처리가 됩니다.
- 이렇게 하면 끝
- 세가지 방법이 있습니다.
- pull request를 날리니까 merge가 안된다고 떴을때 ( 다른 사람이 push한 것 때문에 충돌이 나기 때문)
- git pull upstream develop으로 프로젝트 repo의 변경사항을 로컬에 땡겨옵니다.
- CONFLICT 메시지가 뜨면서 당연히 충돌이 발생합니다. 로컬로 불러와서 해결하기 위함이었습니다.
- 메시지에 적힌 충돌이 발생한 파일로 들어가서 파일을 병합합니다.(수정합니다.)
- 수정한 파일을 저장하고 add, commit 해줍니다.
- 그 다음 git push origin develop를 날리면 pull request 보내는 버튼이 다시 활성화 됩니다.
- pull request를 보냈지만, 팀장 한테 승인이 되지 않고 수정하라고 떴을 때의 상황입니다. ( File changed에서 확인)
- 아직 pull request 가 open 상태입니다.
- 이 develop브랜치에서 바로 작업해도 된다. 추가작업은.. 그러나 브랜치 파는 것이 더 좋긴합니다.
- 파일을 수정하고 add, commit 합니다.
- 열려있는 pull request에서 push(git push origin develop)하면 열려있는 pr에 바로 반영됩니다..
- 이걸 팀장이 승인 해주면 끝
이렇게 협업할때의 기본적인 프로세스에 대해 실습해보았습니다.
덕분에 깃을 통한 협업이 어떻게 이루어지는지 직접 해보며 배울 수 있었습니다.
'Git' 카테고리의 다른 글
| [Git] 기본 브랜치를 main으로 변경하기 (0) | 2022.12.16 |
|---|---|
| [Git] Vim꾸미기 (0) | 2022.09.17 |
| [Git] Rename과 Revert (0) | 2022.09.16 |
| [Git] Hexo를 통해 나만의 블로그 만들기 (0) | 2022.09.16 |
| [Git] Git flow 전략 (0) | 2022.09.16 |