<221216 TIL> Git Mini Project

Hisu(히수)·2022년 12월 16일
1

TIL

목록 보기
4/9

오늘 부트캠프 강의에서 아주 간단한 팀 프로젝트를 진행했다.
1주일 동안 배웠던 GitGithub를 이용해서 협업을 어떻게 하는지 경험해 볼겸
우리가 이때까지 배웠던 것을 활용해보는 시간이였다.


팀 프로젝트의 주제는 무엇이였는가?

인디언포커, 피보나치킨 등 여러 주제들이 있었지만, 대부분 파이썬이나 자바스크립트를 이용하여 작성해야 되는 알고리즘 문제들이였기 때문에 아직 기초적인 부분 밖에 모르는 우리는 각자 자기소개서를 작성하고 합치는 프로젝트를 진행하기로 했다.
(주제를 정할 때까지만 해도 쉽게 끝낼 수 있을 줄 알았다.)

팀 프로젝트의 과정

  1. 새로운 repository를 만들고 배포하여 팀원의 작업 결과들을 merge 해줄 팀장을 고른다.
  2. 팀장은 repository를 .gitignore 파일을 만들어 기본적인 설정을 하고 팀원들이 작성하게 될 introduce.md라는 파일을 만들어주었다.
  3. 팀장은 팀원들을 repository에 초대해준다.
  4. 팀원들은 repository를 fork하여 각자의 github에 repository를 복사해온다.
  5. 어떤 작업을 진행할 것인지 issues 작성한다.
  6. gitbash에 git clone repo주소를 입력하여 repository를 로컬로 불러온다.
  7. 로컬로 불러온 repository에서 introduce를 vim으로 열어 작성한다.
  8. 작성된 repository를 push하여 github에 저장한다.
  9. github에 저장된 repo를 pull requests하여 팀장님에게 보낸다.
  10. 팀원들이 requests 해준 repository들을 merge하여 결과물을 만든다.

계속되는 Conflict...

repo를 불러오고 작성하고 내보내는 것 까지는 너무 순조로웠다. (너무 순조로워서 빨리 끝내고 다른 주제도 해보자고 얘기까지 나눴는데..)
하지만, 팀장님이 팀원들의 repo를 merge를 하는 순간 충돌의 연속이였다. 내가 기존에 팀장님이 작성해놓은 글의 내용 일부를 지우고 그 틀에 내 자기소개를 넣었다가 생긴 실수도 있었고, 팀원들 간에 섹션이 겹쳐 충돌이 일어났다.
제일 큰 원인은 섹션 구분이 이뤄지지 않아서 생긴 충돌이었다.

Conflict 해결과정

1. 정확한 원인 파악

우리는 처음에 왜 충돌이 일어나는지 짐작은 했지만, 정확한지는 잘 몰랐기 때문에 충돌이 일어나기 전의 시점을 재현해보았다.

  1. 팀장님이 새로운repo를 만들어보았다.
  2. 팀원 두명이 초대를 받아 새로운 repo를 복사해왔다.
  3. 팀장님이 작성해 둔 자기소개는 그대로 유지한 채 밑에 각자의 자기소개서를 작성했다.
  4. 둘 다 pull requests를 하고 팀장님은 zoom을 통해 화면공유를 해주었다.
  5. 첫번째 팀원의 repo를 merge했을 때는 conflict가 발생하지 않는 것을 확인했다.
  6. 두번째 팀원의 repo를 merge했을 때 conflict가 발생하는 것을 보고 원인을 파악했다.

2. 원인 해결

사건의 재현을 통해 정확한 원인을 알게되었고, 우린 여러가지의 해결방법을 도출할 수 있었다. (쌓였던 고구마가 해결되어 너무 상쾌했던 순간이였다.)

  1. 팀장님이 merge했을 때 충돌이 된 부분의 경계선을 지워서 해결한다.
  2. 팀장님이 배포하기 전에 작성해야 될 파일에 팀원들의 각 섹션을 나눠둔다.
  3. 팀원이 push하기 전에 fetch를 통해 업데이트 후 gitbash에서 충돌 된 부분을 수정한다.

후기

1주일간 배웠던 git&github에 대해서 솔직히 강사님이 해주는 강의만 보며 따라치고 공부하기엔 적응도 안 되고 어색함이 많아서 어려움이 있었다. 이해되는 부분도 있었지만 협업했을 때 이것을 어떻게 사용하게 될까? 라는 의문점도 많았었다. 그렇지만 이번 팀 프로젝트를 통해서 팀원들과 팀장이 어떻게 협업하는지 체험하게 되어 많은 것을 알아가게 되는 시간이라 너무 좋았다. 오류가 생기지 않게 하려면 초기에 어떻게 틀을 구성해야 하는지와 오류가 발생했을 때 어떻게 해결해야 되는지 알게 되었다.(일단 팀장님이 써둔 것들은 웬만하면 절대 터치하지 말자….)
또 익숙하지 않았던 git&github에 대해 조금 익숙해지는 유익한 시간이었다.
오늘 팀원들과 빨리 끝내고 추가로 진행하자고 했던 프로젝트는 시간 관계상 하지 못했지만, 주말을 통해 각자 Md로 썼던 것을 html로 바꾸고 내용을 더 추가하여 평일 자습 시간에 다시 합쳐보기로 숙제를 만들었다.

0개의 댓글