오늘 부트캠프 강의에서 아주 간단한 팀 프로젝트를 진행했다.
1주일 동안 배웠던 Git
과 Github
를 이용해서 협업을 어떻게 하는지 경험해 볼겸
우리가 이때까지 배웠던 것을 활용해보는 시간이였다.
인디언포커, 피보나치킨 등 여러 주제들이 있었지만, 대부분 파이썬이나 자바스크립트를 이용하여 작성해야 되는 알고리즘 문제들이였기 때문에 아직 기초적인 부분 밖에 모르는 우리는 각자 자기소개서를 작성하고 합치는 프로젝트를 진행하기로 했다.
(주제를 정할 때까지만 해도 쉽게 끝낼 수 있을 줄 알았다.)
- 새로운 repository를 만들고 배포하여 팀원의 작업 결과들을 merge 해줄 팀장을 고른다.
- 팀장은 repository를
.gitignore
파일을 만들어 기본적인 설정을 하고 팀원들이 작성하게 될introduce.md
라는 파일을 만들어주었다.- 팀장은 팀원들을 repository에 초대해준다.
- 팀원들은 repository를 fork하여 각자의 github에 repository를 복사해온다.
- 어떤 작업을 진행할 것인지 issues 작성한다.
- gitbash에
git clone repo주소
를 입력하여 repository를 로컬로 불러온다.- 로컬로 불러온 repository에서 introduce를 vim으로 열어 작성한다.
- 작성된 repository를 push하여 github에 저장한다.
- github에 저장된 repo를 pull requests하여 팀장님에게 보낸다.
- 팀원들이 requests 해준 repository들을 merge하여 결과물을 만든다.
repo를 불러오고 작성하고 내보내는 것 까지는 너무 순조로웠다. (너무 순조로워서 빨리 끝내고 다른 주제도 해보자고 얘기까지 나눴는데..)
하지만, 팀장님이 팀원들의 repo를 merge를 하는 순간 충돌의 연속이였다. 내가 기존에 팀장님이 작성해놓은 글의 내용 일부를 지우고 그 틀에 내 자기소개를 넣었다가 생긴 실수도 있었고, 팀원들 간에 섹션이 겹쳐 충돌이 일어났다.
제일 큰 원인은 섹션 구분이 이뤄지지 않아서 생긴 충돌이었다.
우리는 처음에 왜 충돌이 일어나는지 짐작은 했지만, 정확한지는 잘 몰랐기 때문에 충돌이 일어나기 전의 시점을 재현해보았다.
- 팀장님이 새로운repo를 만들어보았다.
- 팀원 두명이 초대를 받아 새로운 repo를 복사해왔다.
- 팀장님이 작성해 둔 자기소개는 그대로 유지한 채 밑에 각자의 자기소개서를 작성했다.
- 둘 다 pull requests를 하고 팀장님은 zoom을 통해 화면공유를 해주었다.
- 첫번째 팀원의 repo를 merge했을 때는 conflict가 발생하지 않는 것을 확인했다.
- 두번째 팀원의 repo를 merge했을 때 conflict가 발생하는 것을 보고 원인을 파악했다.
사건의 재현을 통해 정확한 원인을 알게되었고, 우린 여러가지의 해결방법을 도출할 수 있었다. (쌓였던 고구마가 해결되어 너무 상쾌했던 순간이였다.)
- 팀장님이 merge했을 때 충돌이 된 부분의 경계선을 지워서 해결한다.
- 팀장님이 배포하기 전에 작성해야 될 파일에 팀원들의 각 섹션을 나눠둔다.
- 팀원이 push하기 전에 fetch를 통해 업데이트 후 gitbash에서 충돌 된 부분을 수정한다.
1주일간 배웠던 git&github에 대해서 솔직히 강사님이 해주는 강의만 보며 따라치고 공부하기엔 적응도 안 되고 어색함이 많아서 어려움이 있었다. 이해되는 부분도 있었지만 협업했을 때 이것을 어떻게 사용하게 될까? 라는 의문점도 많았었다. 그렇지만 이번 팀 프로젝트를 통해서 팀원들과 팀장이 어떻게 협업하는지 체험하게 되어 많은 것을 알아가게 되는 시간이라 너무 좋았다. 오류가 생기지 않게 하려면 초기에 어떻게 틀을 구성해야 하는지와 오류가 발생했을 때 어떻게 해결해야 되는지 알게 되었다.(일단 팀장님이 써둔 것들은 웬만하면 절대 터치하지 말자….)
또 익숙하지 않았던 git&github에 대해 조금 익숙해지는 유익한 시간이었다.
오늘 팀원들과 빨리 끝내고 추가로 진행하자고 했던 프로젝트는 시간 관계상 하지 못했지만, 주말을 통해 각자 Md로 썼던 것을 html로 바꾸고 내용을 더 추가하여 평일 자습 시간에 다시 합쳐보기로 숙제를 만들었다.