Github로 팀 프로젝트 하면서 느낀점
요즘 학원에서 하는 파이널 프로젝트 떄문에 정신없어 블로그를 쓰질 못했네요..ㅎㅎ
그래서 오랜만에 Github 관련 글을 하나 써보려고 합니다.
Github로 팀프로젝트를 하면서 처음할 땐 몰랐지만 팀프로젝트를 하면서 느꼇던 어려움과 오류를 적으려고합니다.
소스코드는 팀원분이 비공개를 원하셔서 github 주소를 올리진 못합니다.
1. Master 브런치에 바로 안올리고 각자 개발 브런치를 만들어서 사용해야하는 이유
혼자 Github를 사용할 때에는 충돌의 위험성이 없어 그냥 개발하는 즉시 Master 브런치에 커밋 후 푸쉬했었습니다.
초반에 팀프로젝트도 Master로 바로바로 올렸었는데 이 때 정말 많은 충돌이 발생했었습니다.
충돌이유는 대부분 팀원 중 같은 부분을 수정한 사람이 있어서 코드가 엉킨 상황해서 pull을 했을 떄 와 pull를 안하고 수정하고 커밋을 했을 때 발생한 경우들이었습니다.
충돌이 발생한 경우 직접 충돌난 부분에 가서 고치거나 수정이 어려운 경우에는 수정한 부분은 따로 빽업해놓고 마스터브런치의 최신버전으로 리셋하거나 심한 경우 프로젝트를 삭제 후 다시 받아야하는 번거로움이 있었습니다.
이런 상황을 최대한 줄이고자 팀원들과의 대화를 통해 각자 브런치를 만들어 필요할 때마다 자신의 브런치에 push하여 백업 해놓고 맡은 기능구현이 끝나면 master브런치에 마지하는 식으로 진행하기로 했습니다.
회의 후 브런치를 나누어 진행하니 전보다 2배 이상의 충돌 감소 효과가 있었고 , 소통 부재로 수정 부분이 겹쳤을 때도 백업 해놓는 부분이 있었기때문에 복구하는것이 어렵지 않았습니다. 처음 시행할떄는 팀원들도 굳이 나눠서 하는 이유가 뭘까 의문이 있었지만 프로젝트를 진행할 수록 나눠서 함의 중요성을 이해하게 되었습니다.
2. 소통의 중요성
이번 프로젝트를 진행하면서 Git 이용 시 소통의 중요성을 한번 더 깨닫게 되었습니다.
1번에 말한 것 처럼 충돌의 원인 중 하나는 최신 버전으로 pull를 안받고 수정 햇을 때 입니다.
이는 push를 했을 때 팀원들에게 말해 팀원들이 pull를 통해 최신버전으로 유지함으로서 최대한 충돌을 줄일 수 있습니다. 하지만 팀프로젝트 초기에 push 후 서로 말을 안해줘서 무작정 수정 후 커밋하다가 충돌이 많이 일어났었습니다.
또 다른 원인은 같은 부분을 수정했을 때 입니다.
이것도 마찬가지로 각각 기능을 분담하여 진행하면 최대한 같은 부분의 수정은 막을 순 있지만 , 부득이하게 다른 부분을 건드려야할 때 소통의 부족으로 한명은 백업이나 리셋을 한 후 다시 작성해야하는 번거로움이 있었습니다.
이를 최소화 하기 위해선 소통이 정말 중요하다고 생각했습니다.
3. 자주 등장하는 오류들
Github를 사용하면서 자주 만났던 오류는 크게 5가지 있었습니다.
- DIRTY_WORKTREE
이클립스에서 GIT를 통해 PULL를 받을 떄 발생하는 에러입니다.
이런 경우는 보통 자신의 로컬 파일과 Master에 있는 파일의 코드가 엉켜 충돌이 났을 때 나옵니다.
해결방법은
프로젝트 우클릭 후 Team-Reset-HardReset를 통해 마스터의 최신버전으로 덮어쓰기 하여 해결할 수 있습니다. 다만 Reset시 수정한 내용이 다 날라가기 때문에 만약 진행한 내용이 많다면 수정한 부분을 따로 백업 해놓고 진행해아합니다. 그래도 안된다면 git repository를 삭제 후 다시 입력해주시면 해결 됩니다.
- non-fast-forword
이런 경우 이클립스에서 Push를 할 때 나오는 오류 입니다.
오류의 원인은 정확하진 않지만 저의 경우 충돌이 난후 해결을 하지 않은 채 Push하려고 할 때 발생했습니다.
이런 경우 해결법은 다른 블로그에 상세히 나와있기에 출처를 남기겠습니다.
https://m.blog.naver.com/sim4858/220924984480
[Eclipse] Github push 오류 (rejected - non-fast-forward) 해결하기
이클립스에서 Github로 push를 하는 과정에서 다음과 같은 오류와 마주 보곤 합니다. 이때는 먼저 이클립...
blog.naver.com
- Confict (*충돌)
Git 이용시 가장 자주본 오류 입니다.
이런 경우 해결방법이 2가지가 있습니다.
첫번 째는 경고창 아래에 나와있는 충돌난 파일를 찾아서 직접 수정하는 방법입니다.
프로젝트 우클릭 후 Team - Synchronize 를 누르시면 아래의 창이 뜨는데
여기서 빨간 부분을 누르면 충돌이 난 부분을 볼 수 있습니다.
충돌난 파일을 들어가보시면
이런식으로 로컬 파일과 git에 올라가있는 파일의 내용을 볼 수 있습니다.
여기서 빨간 표시한 부분을 눌러 깃상의 내용을 로컬 파일에 덮어 쓰기 하거나
직접 수정하여서 충돌을 없앨 수 있습니다.
두 번째는 위와 마찬가지로 백업을 해놓고 리셋하는 방법입니다.
가끔 직접 충돌 부분을 수정해도 계속 충돌이 나는 경우가 있습니다. 이때에는 리셋이 가장 빠른방법인거같습니다.
자 오늘은 이렇게 깃허브를 쓰면서 느낀점을 적어봤습니다 ㅎㅎ 아직 프로젝트 진행 중이라
오류 발생 시 계속 추가해서 올려보도록 하겠습니다.