▼ What ? Why ?
이번에 로컬(local)에서 작업한 파일을 깃허브 main branch에 병합하려고 했는데 그 과정에서 기억해뒀으면 하는 점이 있어서 그 부분을 정리해두려고 한다.
▼ 어떤 문제 ?
- 다음주가 프로젝트 발표날이라 이제 각자 한 작업을 병합해야 되는데, 이번 게임 프로젝트에선 다들 깃 사용이 미숙한 탓에 브랜치(branch)를 각자 생성하지 않고 각자 로컬(local)에서 작업하는 식으로 진행해서 병합하는데 문제가 좀 있었다.
- 하지만, 우리가 개발하려는 게임이 규모가 작아서 그런지 그냥 main branch의 파일을 그대로 로컬(local)로 가져와서 각자 작업한 파일들을 넣고 GitHub에 푸쉬를 해도 큰 문제가 없었다.
( 개발 파트를 "서버", "캐릭터", "오브젝트", "맵", "UI" 이런 식으로 나눠서 각자 작업한 파일들이 서로 영향을 거의 주지 않았던 점 때문에 가능했는데, 서버 하나를 여러 명이 맡아서 개발하고 각자 작업한 파일들을 뒤늦게 병합(merge)해야 됐으면 프로젝트가 터졌을지도 모르겠다.. ) - 난 UI 개발 파트를 맡았기 때문에,
내 브랜치(uykm branch)를 따로 파고 UI 관련 파일을 모아놓은 파일을 main branch에서 가져온 파일에 그대로 옮긴 다음에,
내 브랜치에 푸쉬(push)하고 그다음 main branch와 병합(merge)하는 식으로 했다. - 근데 언리얼 엔진 자체에서 프로젝트를 생성해본 적 밖에 없고 깃에서 가져온 프로젝트를 언리얼 엔진에서 어떻게 여는지를 몰랐던 부분이 문제가 됐다.
➜ 이 부분을 어떻게 해결했는지 정리해두려고 한다.
▼ GitHub에서 가져온 프로젝트를 Unreal Engine 5에서 열기
- 아래처럼 평소에 프로젝트를 열던 방식으로 하면 안된다고 한다.
- 먼저 GitHub에서 가져온 파일을 열어보면 언리얼 엔진 "로고"로 돼어있는 파일이 있는데, 이 파일을 오른쪽 클릭해서 "Generate Visual Studio project files" 라는 것을 해줘야 한다고 한다 !
( 적합한 '.Net Core x.x.x' 가 다운돼있어야 오류가 발생하지 X ➜ 이 경우엔 '.Net Core 6.0.0' 을 다운 받았다. )
- 성공적으로 실행되면 프로젝트 이름과 같은 이름이 visual studio 파일(Oneshot_FPS.sln)이 생성된다.
➜ Visual studio에서 앞서 생성한 "Visual Studio project files(Oneshot_FPS)" 을 빌드해주면 된다.
- 여기서 아래와 문제가 발생했다 !
Severity Code Description Project File Line Suppression Status Details Error C1083 Compiler intermediate file cannot open file. 'C:\Users\digi1\OneDrive\OneshotFPS_ToolsProject\Intermediate\Build\Win64\Oneshot_FPSEditor\Development\Engine\SharedPCH.Engine.ShadowErrors.InclOrderUnreal5_0.h.pch': Invalid argument Oneshot_FPS C: \Users\digi1\OneDrive\Desktop\uykm\OneshotFPS_ToolsProject\Intermediate\ProjectFiles\c1xx 1
- 이 문제는 생각보다 간단하게 해결됐는데, 처음 보는 유형의 문제였어서 정리해둔 것이다.
➜ 파일의 경로 중간에 "바탕 화면" 처럼 한글로 된 경로가 있어서 발생하는 문제였다.
➜ 그래서 이 파일을 영어만으로 된 경로로 저장해줬더니 위 문제가 해결되었다 !
▼ 브랜치 병합(merge)
- uykm (개인) 브랜치 생성
➜ git branch uykm
➜ git checkout uykm
➜ git commit -m "UI 추가"
➜ git push origin uykm - uykm - main 브랜치 병합
➜ git checkout main
➜ git merge uykm- 메시지를 작성하려면, 편집기에서 i 키를 눌러 삽입 모드로 전환합니다.
- 커밋 메시지를 입력합니다. '#'으로 시작하는 줄은 무시되므로, 실제 커밋 메시지는 '#'이 아닌 줄에 작성.
- 메시지를 작성한 후 Esc 키를 눌러 삽입 모드를 종료.
- :wq를 입력하고 Enter 키를 눌러 메시지를 저장하고 편집기를 종료.
➜ git push origin main (원래는 PR을 보내고 푸쉬해야 한다.)
➜ 머지하기 위해 생성한 branch는 삭제하자 !
▼ 정리
- 이번 프로젝트는 운이 좋게도 각 파트가 작업한 파일이 충돌나는 경우가 없어서 괜찮았지만,
협업을 시작할 때 각자 브랜치를 생성하지 않고 각자 로컬(local)에서 작업하고 나중에 main branch로 모두 push 하는 건 파일이 충돌할 확률이 매우 높기 때문에, 앞으로 협업을 하게 될 땐 이런 부분을 주의해야 할 것 같다. - 23.11.30 (추가)
➜ Unreal Engine은 특히 블루 프린트 같은 파일을 작업해놓고 충돌이 발생하면 직접 수동으로 충돌난 파일을 수정해줘야 하기 때문에 진짜 답이 없다.
( 최근에 팀원이 이 부분을 모르고 작업하는 바람에 충돌이 발생해서 같은 작업을 다시 하는 경우도 생기고, 내가 작업한 파일이 날라갈 뻔도 했다.. ) - 프로젝트 마무리하면서.. (추가)
➜ 언리얼엔진이 Git branch를 활용하는 데 있어서 다른 분야랑 구조가 좀 다른건지.. 다른 팀원과 어떤 한 파일을 동시에 작업하게 되면 나중에 병합할 때 무조건 충돌이 나는 바람에 결국 누가 어떤 파일을 작업하고 매번 확인해보고 작업을 하는 방식으로 진행됐다.