깃 , 소스트리

김성진·2024년 2월 16일

2월 16일 수업 정리

게임 제작은 혼자 하기 힘들다. 여럿이서 협업해서 만들어가기 위한 버전 관리 프로그램인 깃과 소스트리를 배워보자.

Git

https://git-scm.com/
소스관리 툴
https://github.com/
git에 저장된 소스를 호스팅 해주는 사이트

기존의 중앙 집중형 형상관리 도구는 서버가 저장공간이고 로컬 머신(내 컴퓨터)가 작업 공간으로 구성되었다. 이것은 복잡한 과정 없이 이해하기 쉽지만 서버에 의존하기 때문에 오프라인 작업이 불가능하고, 서로의 작업물이 서로에게 영향을 끼치기 쉬웠다.
git은 분산형 버전관리 시스템이다. 서버에는 (원격 저장소라고 부름) 결과물 하나만이 남지만, 작업자 각각이 서버에서 전체 데이터를 다운받아, 각자 로컬 저장소에서 작업한 뒤 본인의 버전을 올려가다가 필요하면 (확실하게 작업이 끝나면) 서버와 본인의 버전을 통합시켜 서버의 편집버전을 올리는 형태로 진행된다.

실제로 접해보니 굉장히 혼란스러웠는데, 브랜치가 뭔지, 뭐가 실제 결과물이고 뭐가 내가 작업중인 물건인지 구분하기까지 시간이 꽤나 걸렸다.

sourcetree

https://www.sourcetreeapp.com/
소스트리는 git을 편집하는데에 특화된 GUI 프로그램이다. 누가 작업하고 올렸는지, 커밋 푸쉬 브랜치등의 작업결과를 눈으로 쉽게 확인할 수 있고 git의 명령을 버튼으로 만들어서 사용을 편리하게 해준다.

간단 용어

로컬 저장소 - 내 작업 공간, 서버에서 전체 데이터를 받아와서 내가 얼마든지 수정해도, 심지어 올리더라도 병합하지 않는한 서버의 데이터가 손상될일은 없다.

원격 저장소 - 서버 자체에 저장된 전체 데이터.
결과물 뿐 아니라 각자가 로컬에서 만들었던 버전들도 버전별로 저장이 되어있다. 원한다면 이전으로 돌릴수도 있다.

브랜치 - 가지 라는 뜻. 쉽게 말하면 누군가가 기존 서버의 데이터를 편집해서 버전업을 했을때, 그사람만의 가지가 분화되어 나간것이다. 서버에는 원래 데이터가 그대로 있고, 그사람이 추가한 가지에만 버전업 된 데이터가 있다.
이것을 여럿이서 동시에 작업하면 작업한 만큼 가지가 분화되어 나갈것이고, 이를 서로 통합하는 과정을 거쳐 최종 결과물(main)에 합치면 그제야 완성이 되는 것이다.

페치 fetch - 가져옴 이라는 뜻. 원격 저장소에 저장되어 있는 데이터들을 가져온다. 다만, 가져오기만 하고 내 로컬 저장소와 합치지는 않는다. 다른이가 변경한 부분이 있다면 , 우선 가져와서 어디가 변경되었는지, 내것과 호환이 되는지 등등을 확인만 하는 버튼이다.

풀 pull - 당기다. fetch의 강화형이다. 가져온 데이터를 내 로컬 저장소에 저장한다. 당연히 pull을 누르면 자동으로 fetch도 실행된다.
다른사람이 자신의 브랜치만 수정했다면 언제든 pull해도 문제가 없지만, 그사람이 자신의 가지를 main에 병합했다면 내 main이 그사람이 병합한 시점과 다른 경우 pull이 되지않고 충돌이 발생한다. 반드시 충돌체크를 하고 조심히 병합해야한다

푸쉬 push - 밀다. 내가 작업한 요소들을 원격 저장소에 저장하는 작업이다. 다른이들이 볼 때 내 브랜치가 한단계 올라가는것을 확인할 수 있다.

머지 merge - 병합. 가장 중요하고 조심해야 하는 작업이다. 다른이가 작업한 결과물과 내 결과물 혹은 서버의 결과물과 합치는 작업이다. 당연히 충돌이 일어날 수 있으니 조심해야 한다. 무턱대고 원격 저장소 main과 합치기보단 서로의 작업물을 병합해서 결과물을 서버에 합쳐놓는게 좋을 것 같다.
사실, 합치는 것으로 끝이 아닌, 합쳐서 한쪽에 덮어 씌우는것이기 때문에 다른쪽 브랜치는 삭제해야 트리가 완전히 모인다. 버전업이 끝나지 않았다면 당연히 삭제 안해도 된다.

스테이지 stage - 무대, push나 pull 등을 할때 변경된 부분이 있는 파일들만 표시해주는데, 이를 stage에 올려야 해당 파일들이 push 등이 실행된다.

.git - 로컬 저장소에 clone(복사) 하면, 해당 파일이 위치에 생성되는데 git의 여러 가상위치나 히스토리 등을 총괄하는 파일이기 때문에 지우지 않도록 조심해야 한다

.ingnore -
github/gitignore: A collection of useful .gitignore templates
해당 파일 다운로드 경로.
작업파일에는 소스코드나 필터등의 필요한 파일 말고도 실행파일이나 x64같은 파일들이 있는데 자동으로 걸러주는 템플릿이다. .ignore 로 이름을 변경해서 작업파일에 넣어주면 된다.

이제부터는 깃 허브에서 프로젝트를 만들고, 팀원들을 초대한다. 그 후 작업물을 공유해서 지금까지 수업에서 만든 Timber 게임에 멀티플레이, 타이틀 씬, 모드 선택 씬, 캐릭터 선택 씬 등을 역할을 분담하여 작업해 보겠다.

profile
듀얼리스트

0개의 댓글