내일배움캠프 18일차 - Git 3 (언리얼 협업을 위한 깃 기초 2, petch, pull)
Git으로 팀원과 협업하기
Git을 처음 사용할 때 제일 어려운 상황 중 하나가 팀원들과 협업할 때 어떻게 작업물을 합치고 그 과정에서 발생하는 문제를 어떻게 대처하는가에 대한 것이다.
곧 있을 언리얼 팀프로젝트 개발을 하기 위해서 팀 단위 Git 사용법을 익힐 필요가 있다. 아래 예시들을 보고 이 경우 어떻게 Git의 기능을 활용하는 지에 대해 알아보자.
다른 팀원이 프로젝트를 업로드했다고 가정하고, 로컬 레포지토리 폴더를 두 개로 나누어보자.
하나는 내가 작업 중인 로컬 레포지토리 폴더, 다른 하나는 팀원이 작업 중인 로컬 레포지토리 폴더라 가정해보자.
| 각각의 폴더에서 Generate Visual Studio project files 및 빌드를 진행. 경로 및 폴더명이 변경됨에 따라 프로젝트 초기화 과정이 필요함. |
새로 생성한 로컬 레포지토리 폴더들을 깃허브에도 추가한다.
| 나와 내 동료의 로컬 레포지토리라고 가정한다. |
일어날 수 있는 상황
1. 팀원이 "관련 내용 커밋 푸시 했습니다!" 라고 알렸을 때 내려 받아야 하는 상황.→ petch/pull만 하면 끝.
2. 내가 작업한 내용을 리모트 레포지토리에 올리려는데, 아주 운좋게도 작업 시작 전부터 업로드 시점까지 아무도 리모트 레포지토리를 건드리지 않은 상황.
→ petch/pull 하고, merge만 하고 commit, push 하면 끝.
3. 내가 작업한 내용을 리모트 레포지토리에 올리려는데, 이미 팀원이 리모트 레포지토리에 작업 내용을 올린 상황. 하지만 또 운 좋게 팀원이 올린 작업 내용과 내 작업 내용이 다른 파일.
→ petch/pull 하고, merge만 하고 commit, push 하면 끝.
4. 내가 작업한 내용을 리모트 레포지토리에 올리려는데, 이미 팀원이 리모트 레포지토리에 작업 내용을 올린 상황. 게다가 팀원과 내가 같은 파일을 작업해버려서 충돌발생.
→ petch/pull 하고, merge했을 때 충돌 발생. 해당 팀원과 상의 후 충돌 해결.
변경 사항 만들기
팀원이 새로운 언리얼 액터 클래스를 만들었다고 가정하자.
팀원의 로컬 레포지토리 폴더의 언리얼 프로젝트에서 Actor 클래스를 상속 받는 MyActor 클래스를 생성했다. MyActor의 소스코드는 하나도 건드리지 않았고, 생성만 하였다.
MyActor 클래스 생성에 따른 변경사항을 커밋 후 푸시해보자.
소스트리 기준 설명1) File Status 클릭.
2) MyActor 클래스가 변경사항에 생긴 모습. 물음표 기호가 "추가된 파일"이란 뜻이다.
3) Stage All을 통해 모든 파일을 Commit 대상 파일로 올림.
4) Commit 메세지 작성.
5) Commit 버튼 클릭.
패치(Petch)
Pull을 바로 받으면, 리모트의 변경사항들이 우르르 쏟아져서 내 로컬에 반영되어버린다.
'나는 바로 반영받고 싶지 않고, 그저 리모트의 변경사항만 보고 싶다.' 할 때 Petch를 쓴다.
소스트리 기준 설명
1) 내 로컬 레포지토리로 돌아옴.
2) History 클릭. 아직 내 로컬 레포지토리는 "새 프로젝트 생성" 커밋에 머물러있음. 이때 팀원이 올린 내용을 바로 반영하고 싶진 않고, 일단 보고만 싶을 때 Petch를 활용함.
| (소스트리) "Fetch from all remotes"만 체크 후 OK 클릭. |
1) pull 받아야할 커밋이 1개 생김.
2) 팀원이 올린 "새로운 액터 클래스 추가" 커밋메세지가 보임.
origin/main 브랜치가 main 브랜치보다 위에 있다는 것이 포인트.
origin/main 브랜치는 리모트 브랜치임. main 브랜치는 로컬 브랜치.
풀(Pull)
팀원이 만든 변경사항을 내 로컬 레포지토리에 적용하는 것.
소스트리 기준 설명Pull 버튼 클릭.
Pull 동작 성공 시 내 로컬 레포지토리에도 팀원의 작업 내용이 반영된다.
댓글
댓글 쓰기