2024. 4. 17. 20:41ㆍUnity/내일배움캠프
오늘은 Git & GitHub 특강이 있었다. 학부생때 몇번 다뤄봤지만 확실히 현업자 튜터님이 설명해주시는 부분중에 내가 모르고있던 부분이 꽤 많았다. 특히 협업 및 작업을 할 때 충돌 방지를 하기 위해 지켜야하는 것들을 위주로 설명 해주셨다.
목차
- Git이란?
- GitHub
- GitHub를 사용하면서 중요한 점
Git
Git이란?
Git은 분산형 버전 관리 시스템(VCS)이다. 여러 개발자가 하나의 프로젝트를 수행할 때 본인의 로컬에서 작업한 작업물을 공유하고 또 해당 작업물을 공유 받고 작업을 이어나갈수 있어야 한다. 하지만 Local To Local로 협업을 진행하게 된다면 많은 문제가 발생하게 된다. 누군가하는 작업을 기다려서 내 작업을 시작해야할수도 있고, 작업끼리 충돌이 일어났을때 로컬저장소에서만 관리해왔다면 이전 버전으로 돌아가기 힘들기 때문이다.
Git은 이러한 문제점으로 인해 원격 저장소를 제공한다. 로컬 저장소에서 해온 작업물을 원격 저장소로 보내놓고 관리를 하는 것이다. 그럼 다른 팀원들은 해당 원격 저장소에서 나의 작업물을 가져가 작업을 할 수 있고 두 개의 원격 저장소를 병합하여 다시 하나의 프로젝트로 결합도 할 수 있다.
VCS라는 이름 답게 원격 저장소를 통해 프로젝트의 버전을 관리해서 협업으로하는 프로젝트에 있어서 매우 유용하다.
GitHub
Git에는 여러 플랫폼이 있는데 내일배움캠프 과정에서는 GitHub를 사용한다. GitHub는 UI를 제공하여 초보자도 쉽게 Git을 다룰 수 있고 여러 기능들을 제공해주고 있다.
실제로 미니프로젝트도 깃허브를 이용하고 있고, 프로젝트 규모가 크지 않기 때문에 main으로 부터만 Branch를 생성하여 작업물들을 병합하는 방식으로 사용하고 있다. 현업에서는 버전관리를 하기 위해 아래와 같이 다양한 브랜치를 생성하고 버전 관리를 진행한다고 한다.
- Master (대규모 업데이트)
- HotFix (빠른 대처가 필요한 업데이트)
- Release (실제 유저에게 배포되는 버전)
- Dev (개발시에 사용하는 버전)
- Featured
GitHub를 사용하면서 중요한 점
사실 Git을 이용하면서 가장 중요한 파트이지 않나 싶다. 협업을 하다보면 병합과정에서 충돌이 발생한다. 충돌이 발생하게 되면 난처해지는 경우가 많고 사람도 스트레스를 받기 때문에 전체적인 프로젝트가 지연이되는 경우가 발생할 수 있다. 이를 예방하기 위해 여러가지 방법이 있다.
먼저 Git Convention 부분이다. 작업을하고 작업물을 브랜치에 푸시할때 Commit을 먼저 수행한다. 기존에 있던 작업물과 비교해서 추가로 넣거나 뺀것이 존재할텐데 해당 Changes를 모두 Commit을 할 때 미리 살펴보고 Push를 할지 말지 결정을 해야 한다. Commit을 할 때 제목을 쓰는 부분이 있는데 추가로 한 작업중에 어떠한 것을 했는지 표현을 해주는것이 협업에 매우 도움이 된다. 이를 Git Convention 이라고하는데 협업을 같이 하는 사람들끼리의 약속이다. 예를들어 내가 플레이어스크립트에서 달리기의 기능을 만들었다면 "[feat] Player-run" 이런 방식으로 작성하면 [feat] 키워드는 기능 구현이라는 코드 컨벤션을 공유하고있는 개발자들은 모두 해당 문구를 보고 이해할 수 있을 것이다. 그렇게 된다면 내가 했던 작업물과 충돌이 나지않는가도 생각해볼 수 있는 것이다.
또한 역할을 확실히 하여 작업할 파일 등을 여러명이서 작업하지 않도록 하는것이다. 물론 프로젝트를 진행하다보면 내가 담당하는 부분의 스크립트가 아니지만 접근을하거나 뭔가 필요한 경우가 생길 수 있다. 이런 경우에는 반드시 팀원과 소통을하고 개발을 진행하는것이 좋다고 튜터님께서 말하셨다. A가 작업하는데 B의 작업중인 스크립트의 수정이 필요한 경우 B에게 얘기를하여 B가 브랜치에 푸시를 미리 해주는것이다. 그럼 A가 해당 작업물을 받아 개발을 이어나갈수 있을 것이다. 결론적으로 충돌을 100%피할 수는 없지만 팀원과의 소통이 잘된다면 피할 확률을 매우 높일 수 있다고 튜터님께서 강조하셨다.
마무리
Git에 관해서 튜터님이 자세하게 알려주셨다. 단순한 사용법 뿐만 아니라, 충돌 회피 혹은 충돌을 최대한 줄이는 방법과 Git에 push 혹은 Merge할때 주의점도 자세히 배울 수 있었다. GitHub사용에 대해 조금 미숙했지만 이번 특강을 통해 더 잘 알게되었고 앞으로 있을 팀프로젝트에서도 팀원과의 소통을 중요시하며 작업을 진행하는게 중요하다는 생각이 들었다.
'Unity > 내일배움캠프' 카테고리의 다른 글
내일배움캠프 Unity 2일차 TIL (0) | 2024.04.16 |
---|