
Unity Version Control을 사용하여 작업 흐름 브랜칭 및 병합
Tutorial
Beginner
+10XP
0 mins
(8)
Unity Technologies

브랜치를 사용하면 동시에 진행되는 개별 작업 흐름을 추적할 수 있습니다. 브랜치에서 협업자는 서로 방해하는 일 없이 애플리케이션의 개별적인 부분을 작업할 수 있으며, 그런 다음 최종 애플리케이션을 위해 브랜치를 병합할 수 있습니다.
이 튜토리얼에서는 Unity Version Control을 사용하여 브랜칭하고 병합하는 방법을 학습합니다.
중요: Unity Version Control의 이전 명칭은 Plastic SCM입니다. 이 학습 콘텐츠는 변경된 이름 및 사용자 인터페이스 변경 사항을 모두 반영하도록 곧 업데이트될 예정이지만, 지금은 이전 이름과 사용자 인터페이스 비주얼이 참고용으로 함께 게시되어 있습니다. 본 교육 과정의 Unity Version Control 사용 지침은 정확하게 제시됩니다.
1. 개요
대부분의 팀에서는 다양한 팀원이 프로젝트에서 개별적인 부분을 맡아 작업합니다. 이를테면 3명의 프로그래머가 동일한 게임의 서로 다른 시스템에서 동시에 작업하려 할 수 있습니다. 하지만 각 협업자가 변경 사항을 적용하고 테스트하는 동안 프로젝트가 복잡해지거나 아예 사용할 수 없게 될 수 있으며, 이에 따라 모두가 불편을 겪게 될 것입니다. 매우 큰 규모로 체인지 세트를 생성하고 테스트를 완료한 다음 체크인하는 대안을 고려할 수도 있지만, 이렇게 되면 모든 협업자가 작업을 백업하고 변경 사항을 추적하는 소스 관리의 이점을 누릴 수 없습니다.
베스트 프랙티스는 각 협업자의 작업을 위한 브랜치를 생성하는 것입니다. 각 브랜치는 전체 프로젝트의 개별적인 배리에이션을 나타냅니다. 브랜치에서는 프로젝트에서 자신이 맡은 부분에 대해 디자인, 디버그, 최적화를 수행할 수 있으며, 아직 제대로 작동하지 않는 파일을 팀원에게 영향을 미치지 않고 체크인할 수도 있습니다. 작은 체인지 세트를 자주 체크인할 수도 있으며 이러한 방식은 디버깅과 디자인에 더 효과적입니다. 작업이 완료된 브랜치는 메인 브랜치에 병합할 수 있습니다.
2. 시작하기 전에
이 튜토리얼을 계속하려면 이 학습 경험에서 이전 튜토리얼을 완료해야 합니다. 또한 다음 작업을 완료한 상태여야 합니다.
- Unity Version Control Cloud Edition 클라이언트 애플리케이션을 다운로드하여 설치합니다.
- Unity Version Control 계정을 생성합니다.
- 새 작업 공간 및 저장소를 생성합니다.
- 간단한 Unity 프로젝트를 저장소에 체크인합니다.
- 몇 개의 체인지 세트를 저장소에 추가합니다.
- 저장소를 공유할 협업자를 초대합니다.
- 협업자에게서 수신하는 변경 사항으로 작업 공간을 업데이트합니다.
3. 브랜치 생성
Unity 에디터의 Unity Version Control 창 또는 Unity Version Control 앱을 사용하여 브랜치를 생성할 수 있습니다.
Unity 에디터 내에서 브랜치를 생성하는 방법은 다음과 같습니다.
1. 이 연습에서는 구체를 씬에 추가(GameObject > 3D Object > Sphere)하고 0,0,0이 아닌 다른 위치로 옮긴 후 ‘Added sphere’라는 코멘트와 함께 체인지 세트를 체크인합니다.
2. Unity Version Control 창에 Branches 탭이 표시되지 않는 경우 Branch 버튼을 선택한 다음 Branches를 선택합니다.
3. Branches 탭에서 메인 브랜치를 선택합니다. 지금은 이 브랜치 하나만 있을 것입니다.
4. 오른쪽 클릭하고 Create child branch를 선택합니다.
5. 이 연습에서는 브랜치 이름을 ‘Sphere’로 저장하고 원하는 코멘트를 추가합니다. Switch workspace to this branch를 활성화 상태로 유지합니다. Create를 선택합니다.
6. Branch 버튼을 다시 선택하여 Unity Version Control 앱을 열고 Branch Explorer를 엽니다. 이 창을 새로 고치면 다이어그램에 새 브랜치가 나타납니다. 홈 아이콘이 브랜치에 표시될 것입니다. 아직 체크인한 변경 사항이 없으므로 브랜치에는 노드가 없습니다.
4. 브랜치에 체인지 세트 추가
이제 체인지 세트를 브랜치에 추가할 차례입니다. 이번 실습에서는 나중에 병합 프로세스를 쉽게 관찰할 수 있도록 체인지 세트를 아주 단순하게 유지할 것입니다.
최상의 결과를 위해 다음 지침을 정확히 따라서 간단한 체인지 세트 몇 개를 추가하세요.
1. 구체를 육안으로 식별할 수 있을 만큼 떨어진 위치로 옮기고 변경 사항을 체크인합니다.
2. 구체를 육안으로 식별할 수 있을 만큼 다른 크기로 조절하고 변경 사항을 체크인합니다.
3. 체인지 세트를 브랜치에 추가하면 Branch Explorer에서 확장된 것이 보입니다. 뷰를 새로고침하세요.
4. 이제 작업 공간을 메인 브랜치의 마지막 체인지 세트로 다시 전환합니다. Unity 에디터에서 Changesets 탭으로 이동하여 브랜치에 없는 최신(맨 위) 체인지 세트를 선택하고 오른쪽 클릭한 다음 Switch workspace to this changeset를 선택합니다.
5. 이제 큐브를 씬에 추가(GameObject > 3D Object > Cube)하고 0,0,0이 아닌 다른 위치로 옮깁니다.
6. 구체를 Sphere 브랜치에서 사용한 위치와 다른 위치로 옮깁니다. 육안으로 구분 가능할 정도로 옮기세요.
7. 체인지 세트를 ‘Added cube, moved sphere’ 코멘트와 함께 체크인합니다.
Branch Explorer가 다음과 같은 모습이 됩니다.
현재 새 브랜치에서 작업 중이고 협업자는 메인 브랜치에서 작업 중이라고 가정해 보겠습니다. 이제 브랜치를 메인 브랜치에 다시 병합하고 모든 변경 사항을 함께 확인하겠습니다.
5. 브랜치 병합
이제 모든 팀원이 진행 상황을 확인하고 모든 변경 사항을 함께 확인할 수 있도록 브랜치를 메인 브랜치에 다시 병합합니다.
1. Branch Explorer에서 홈 아이콘이 메인 브랜치의 최신 체인지 세트에 있어야 합니다. 그렇지 않다면 해당 노드를 선택하고 오른쪽 클릭한 다음 Switch workspace to this changeset를 선택합니다. Unity Version Control 및 Unity 에디터의 모든 메시지를 수락합니다.
2. Branch Explorer에서 브랜치의 체인지 세트 노드 뒤에 있는 바를 선택합니다. 이 바는 전체 브랜치를 나타냅니다.
3. 오른쪽 클릭하고 Merge from this branch를 선택합니다. 그러면 다음과 같은 메시지가 나타납니다.
왜 이런 일이 발생할까요? Sphere 브랜치의 변경 사항과 메인 브랜치의 변경 사항이 모두 같은 파일, 즉 씬 파일을 변경했기 때문입니다. 씬 파일에는 씬의 게임 오브젝트에 대한 많은 정보가 저장되어 있기 때문에 이 파일에서 충돌이 발생하는 경우가 많습니다.
6. 충돌 해결
이 병합을 계속하려면 유지할 변경 사항을 결정해 Unity Version Control에 알려야 합니다.
충돌을 해결하고 병합을 완료하는 방법은 다음과 같습니다.
1. Resolve conflicts를 선택합니다.
참고: 병합 툴의 정의가 잘못되었다는 오류가 나타나는 경우 Preferences > Merge Tools를 선택하고 Unity 설치 폴더 경로를 변경합니다.
한 브랜치에서 변경되는 게임 오브젝트가 다른 브랜치에서 변경된 것과 완전히 다르다면 Unity Version Control에서 충돌을 자동으로 해결할 수 있습니다. 그러한 경우 해당 메시지가 표시되며 계속 진행하면 됩니다.
여기서는 한 브랜치에서 구체의 크기를 조정하고 다른 브랜치에서 큐브를 추가했으며 이 변경 사항은 서로 충돌하지 않습니다. 하지만 두 브랜치 모두에서 구체의 위치를 변경했으므로 그러한 충돌은 수동으로 해결해야 합니다.
다음과 같은 정보 화면이 나타납니다. 화면을 살펴보겠습니다.
2. 정보 창을 닫고 그 뒤에 있는 Mergetool 창을 살펴봅니다. 다음과 같이 3개의 열이 있습니다.
- 파란색: Sphere 브랜치의 씬 파일
- 노란색: 브랜치 이전 상태의 씬 파일
- 초록색: 메인 브랜치의 씬 파일
이 3개 파일에서 차이가 있는 라인이 강조 표시되어 있습니다.
3. Mergetool에서 위로 스크롤하여 GameObject: 섹션을 찾고 해당 섹션에서 m_Name: 라인을 찾습니다. 이 라인이 구체의 이름이 됩니다.
씬 파일에서 여러 충돌을 해결해야 하는 다른 경우에는 그러한 이름이 충돌이 있는 각 게임 오브젝트를 식별하는 데 도움이 됩니다.
4. 강조 표시된 라인까지 다시 아래로 스크롤하여 Mergetool 창의 하단 창을 봅니다. 이것이 결과 파일입니다. 기본적으로 3개 라인이 모두 나열되지만 구체의 서로 다른 3개 위치를 지정하면 씬 파일에서 오류가 발생합니다.
5. 오류를 해결하기 위해 창 상단의 색상 바를 토글하여 베이스 및 대상(노란색, 초록색) 버전의 선택을 해제합니다. 아래 예시에서는 Sphere 브랜치의 위치를 선택했습니다. 구체 작업을 수행하는 것이 브랜치의 목적이었기 때문입니다. 결과 파일에 파란색 라인 하나만 강조 표시되어 있음을 알 수 있습니다.
6. Mergetool 상단에서 Save & exit를 선택합니다.
Unity Version Control 창에 다음과 같은 메시지가 표시됩니다.
7. Unity Version Control 앱에서 Apply changes를 선택하고 Pending Changes 탭을 선택합니다. 충돌을 해결한 파일이 이제 대기 중인 변경 사항이 됩니다. Unity Version Control 앱은 저장소와 작업 공간 사이의 차이점도 표시합니다.
8. 이 체인지 세트에 대한 코멘트를 입력하고 Checkin을 선택합니다.
9. Branch Explorer를 열어 병합 결과를 확인합니다.
메인 브랜치에서 생성한 큐브와 Sphere 브랜치에서 변경한 구체를 Unity 에디터에서 볼 수 있습니다.
충돌 정보
위 연습에서는 쉽게 해결할 수 있는 충돌을 특별히 설정했습니다. 하지만 실제 작업에서는 충돌을 해결하기가 그리 쉽지 않을 것입니다. 다음은 충돌을 방지하고 해결하는 데 도움이 되는 팁입니다.
- 충돌을 방지하도록 브랜치를 계획합니다. 각 브랜치에서 각 협업자가 서로 다른 게임 오브젝트와 에셋, 스크립트를 작업하도록 합니다.
- 씬 파일에 다수의 충돌이 있는 경우 파일의 라인을 자세히 살펴봅니다. 인스펙터의 프로퍼티를 살펴보는 것과 유사합니다. Mergetool을 사용하면 각 충돌을 확인하고 해결할 수 있습니다.
7. 시도해 볼 만한 추가 작업
이 학습 경험은 Unity Version Control을 시작하기에 충분한 기능만 소개하고 있습니다. 더 많은 기능을 살펴보세요.
Unity 에디터의 Unity Version Control은 Transparent SCM이라는 단순화된 워크플로를 제공합니다. Unity Version Control(이전 명칭: Plastic SCM) 기술 자료에서 투명성 높은 워크플로에 대해 자세히 알아보세요.
완전한 Unity Version Control 클라이언트 애플리케이션은 어떤 소스 관리 요구 사항도 충족하는 고급 기능을 제공합니다. 자세히 알아보려면 클라이언트 앱의 Unity Version Control(이전 명칭: Plastic SCM) 워크플로 기초 및 커맨드 라인 인터페이스(영문)를 읽어 보세요.
Unity Version Control의 고급 활용 방법은 Unity Version Control(이전 명칭: Plastic SCM) 웹사이트의 관련 기술 자료 전문을 살펴보시기 바랍니다.